分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
9. Oracle深度学习笔记——性能调优汇总
欢迎转载,转载请标明出处:http://blog.youkuaiyun.com/notbaron/article/details/50621026
数据字典高速缓存命中率
数据字典高速缓存命中率如下:
select (sum(gets-getmisses-fixed))/sum(gets)"data dictionary hit ratio" from v$rowcache;
data dictionary hit ratio
-------------------------
.975728791
参考95~99%
1. 硬解析过程
alter session set sql_trace=true;
alter system flush shared_pool;
select table_name from user_tables whererownum<=5;
打开TRC文件如下:
PARSING IN CURSOR #140195096140104 len=50dep=0 uid=0 oct=3 lid=0 tim=700865302 hv=17921204 ad='97a9d708'sqlid='83dx9sc0j2x5n'
select table_name from user_tables whererownum<=5
END OF STMT
PARSE#140195096140104:c=106000,e=131031,p=2,cr=727,cu=0,mis=1,r=0,dep=0,og=1,plh=5472353,tim=700865301
….
再执行相同的命令如下,查看TRC文件如下:
*** 2016-01-30 17:55:48.379
CLOSE#140195096140104:c=0,e=100,dep=0,type=0,tim=1039278193
=====================
PARSING IN CURSOR #140195096140104 len=50dep=0 uid=0 oct=3 lid=0 tim=1039279623 hv=17921204 ad='97a9d708'sqlid='83dx9sc0j2x5n'
select table_name from user_tables whererownum<=5
END OF STMT
PARSE #140195096140104:c=1000,e=937,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=5472353,tim=1039279622
……
发现命中。
使用tkprof处理一下:
具体使用,可以直接输入tkprof
打开结果文件如下:
select table_name
from
user_tables where rownum<=5
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- -------------------- ----------
Parse 2 0.05 0.06 0 5 0 0
Execute 2 0.00 0.00 0 0 0 0
Fetch 4 0.00 0.00 0 140 0 10
------- ------ -------- ---------- ---------- -------------------- ----------
total 8 0.06 0.07 0 145 0 10
Misses in library cacheduring parse: 1
2. 库高速缓存命中率
select sum(pinhits)/sum(pins) Library_cache_hit_ratiofrom v$librarycache;
LIBRARY_CACHE_HIT_RATIO
-----------------------
.927807473
参考大于99%
确定库高速缓存的效率
select namespace,pins,pinhits,reloads fromv$librarycache order by namespace;
NAMESPACE PINS PINHITS RELOADS
-------------------------------------------------------------------------- ---------- ----------
AUDIT POLICY 66 56 0
BODY 1301 1097 16
CLUSTER 1318 1298 0
CONTEXT POLICY 2 0 0
DBINSTANCE 0 0 0
DBLINK 0 0 0
DIRECTORY 51 41 0
EDITION 309 296 0
INDEX 4516 3082 72
OBJECT ID 0 0 0
PDB 0 0 0
QUEUE 10 6 0
RULESET 3 2 0
SCHEMA 0 0 0
SQL AREA 528694 508982 641
SQL AREA BUILD 0 0 0
SQL AREA STATS 6406 262 0
TABLE/PROCEDURE 57487 44691 3245
TEMPORARY INDEX 481 0 45
TEMPORARY TABLE 3361 0 1962
TRIGGER 528 405 0
USER PRIVILEGE 1 0 0
22 rows selected.
其中RELOAD表示SQL语句在老化后又被重新装入库。可以使用DBMS_SHARED_POOL程序强迫将SQL语句保留在共享池的库高速缓存组中。
V$LIBRARY_CACHE_MEMORY视图确定库高速缓存内存对象的数目
V$SHARED_POOL_ADVICE视图提供各种尺寸的共享池预期可节省的分析时间的信息
3. 优化库高速缓存
l CUSOR_SHARING
设置CURSOR_SHARING=FORCE来减轻非绑定变量的问题,强制进行绑定变量。
显示实例启动以来,硬分析数与执行数比较结果,如下:
select s.sid,s.value "Hard Parses", t.value"Executions Count" from v$sesstat s,v$sesstat t where s.sid=t.sid ands.statistic#=(select statistic# from v$statname where name='parse count(hard)') and t.statistic#=(select statistic# from v$statname where name='executecount') and s.value >0;
SID Hard Parses Executions Count
---------- ----------- ----------------
1 576 3895
9 15 77
15 11 82
16 8 51
21 325 4506
22 3 15
34 1 19
37 1 1
39 78 1680
45 12 116
47 1 2
67 6 80
12 rows selected.
l 参数CURSOR_SPACE_FOR_TIME已废弃
l SESSION_CACHED_CURSORS
一个session可以缓存多少个cursor,让后续相同的SQL语句不再打开游标,从而避免软解析的过程来提高性能。(绑定变量是解决硬解析的问题),软解析同硬解析一样,比较消耗资源.所以这个参数非常重要。
session_cached_cursors这个参数是控制sessioncursor cache的大小的。session_cached_cursors定义了session cursor cache中存储的cursor的个数。这个值越大,则会消耗的内存越多。设置在OPEN_CURSORS和会话中使用的游标的数目之间。
查看游标命中次数
select name,value from v$sysstat where name like'%cursor%';
NAME VALUE
--------------------------------------------------------------------------
opened cursors cumulative 456915
opened cursors current 33
pinned cursors current 15
session cursor cache hits 151457
session cursor cache count 6346
cursor reload failures 14
cursor authentications 1219
7 rows selected.
查看总的分析次数:
select name,value from v$sysstat where name like'%parse%';
NAME VALUE
--------------------------------------------------------------------------
ADG parselock X get attempts 0
ADG parselock X get successes 0
parse time cpu 1571
parse time elapsed 4723
parse count (total) 108089
parse count (hard) 8458
parse count (failures) 377
parse count (describe) 21
8 rows selected.
4. 确定要定在共享池中的对象
select type,count(*) objects,sum(decode(kept,'YES',1,0))kept, sum(loads)-count(*) reloads from v$db_object_cache group by type order byobjects desc;
TYPE OBJECTS KEPT RELOADS
-------------------------------------------------------------------------- ---------- ----------
CURSOR 6419 0 499
CURSOR STATS 1909 1114 0
TABLE 691 30 884
VIEW 341 0 5
PACKAGE 225 0 -120
TYPE 163 0 -48
INDEX 82 7 83
MULTI-VERSIONED OBJECT 64 62 3
PACKAGE BODY 43 0 3
Optimizer Finding 43 0 0
SEQUENCE 28 0 -18
SYNONYM 28 0 -21
LIBRARY 23 0 -19
TRIGGER 21 0 0
Optimizer Directive Owner 16 0 0
FUNCTION 13 0 3
NONE 13 0 -13
CLUSTER 7 6 0
TYPE BODY 4 0 0
PROCEDURE 4 0 -2
SCHEDULER CLASS 3 0 0
SCHEDULER JOB 3 0 0
SCHEDULER GLOBAL ATTRIBUTE 2 0 0
QUEUE 2 0 0
PUB SUB INTERNAL INFORMATION 2 0 1
OPERATOR 2 0 0