9 Oracle深度学习笔记——性能调优汇总

               

9. Oracle深度学习笔记——性能调优汇总

欢迎转载,转载请标明出处:http://blog.csdn.net/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

AUDIT POLICY                                                                    2       0              0

SCHEDULER PROGRAM                                                            1       0              0

SCHEDULER WINDOW                                                              1       0              0

RULE EVALUATION CONTEXT                                                          1       0            -1

SCHEDULER GROUP                                                                 1       0              0

RESOURCE MANAGER CONSUMER GROUP                                         1       0              0

EDITION                                                                              1       0              0

RULESET                                                                             1       0              0

 

34 rows selected.

共享池中钉住程序包,命令如下:

EXECUTE SYS.DBMS_SHARED_POOL.KEEP(object_name,object_type);

查看数据库中程序包的数量如下:

select count(*) from v$db_object_cache wheretype='PACKAGE';

 

 COUNT(*)

----------

      223

共享池中钉住的内存量:

select sum(sharable_mem) from v$db_object_cache wheretype='PACKAGE';

 

SUM(SHARABLE_MEM)

-----------------

           2349720

5.  数据缓存优化相关

缓冲区高速缓存的命中率:

selectname,physical_reads,db_block_gets,consistent_gets,1-(physical_reads/(db_block_gets+consistent_gets))"HitRatio" from v$buffer_pool_statistics;

 

NAME                     PHYSICAL_READS DB_BLOCK_GETSCONSISTENT_GETS   HitRatio

-------------------- --------------------------- --------------- ----------

DEFAULT                         18216     159266         2316657 .992642744

可以使用v$db_cache_advice,v$sga_cache_advice 来优化缓冲区。

当然,事物都存在两极,如果存在大量全表扫描或数据仓库,命中率可能远低于100%,但并不一定是坏事。

使用多个池,保留缓冲池(keep)、回收缓冲池(recycle)、默认缓冲池(default)。

确定保留缓冲区高速缓存的备选

select obj object,count(1) buffers,avg(tch)average_touch_count from x$bh where lru_flag=8 group by obj havingavg(tch)>5 and count(1)>25;

将某个表放入到保留缓冲区中,命令如下:

alter table test1 storage (buffer_poolkeep);

6.  PGA

查看数据库中PGA使用情况:

select s.value,s.sid,a.username from v$sesstats,v$statname n,v$session a where n.statistic#=s.statistic# and name='sessionpga memory' and s.sid=a.sid order by s.value;

 

    VALUE      SID USERNAME

---------- ----------------------------------------

   766056        40

   766056        17

   766056         3

   766056         4

   766056        47

   766056        18

   766056        20

   766056         6

   766056         7

   766056        28

   766056        10

   766056        24

   774456        19

   774456         8

   774456         5

   790912         2

   962664        46

  1421416        22

  1486952        36

  1535432        30

  1618024        16

  1618024        31

  1749096        15

  2093792        14

  2330264        13

  2330264        11

  2338920        44

  2609464         9

  3395896        38

  4911624         1 SYS

  8827016        12

 12636472        21

 62238824        23

 

33 rows selected.

查看PGA状态:

select * from v$pgastat;

 

NAME                                                                              VALUE UNIT               CON_ID

-------------------------------------------------------------------------- ------------ ----------

aggregate PGA target parameter                                          377487360 bytes                     0

aggregate PGA auto target                                            232538112 bytes                     0

global memory bound                                                        75497472 bytes                     0

total PGA inuse                                                        118634496 bytes                     0

total PGA allocated                                                  154334208 bytes                     0

maximum PGA allocated                                                 342854656 bytes                     0

total freeable PGA memory                                             14745600 bytes                     0

process count                                                                   42                       0

max processes count                                                               63                       0

PGA memory freed back to OS                                                511049728 bytes                     0

total PGA used for auto workareas                                                 0 bytes                     0

maximum PGA used for auto workareas                                         5123072 bytes                     0

total PGA used for manual workareas                                            0 bytes                     0

maximum PGA used for manual workareas                                           0 bytes                     0

over allocation count                                                                 0                       0

bytes processed                                                     1479985152 bytes                     0

extra bytes read/written                                                          0 bytes                     0

cache hit percentage                                                               100percent                 0

recompute count (total)                                                      1436                       0

 

19 rows selected.

查看PGA效能

select low_optimal_size/1024 "Low (K)",(high_optimal_size+1)/1024 "High (K)",optimal_executions"Optimal",onepass_executions "1-pass",multipasses_executions ">1 Pass" from v$sql_workarea_histogram wheretotal_executions <> 0;

 

  Low (K)   High (K)    Optimal    1-pass    >1 Pass

---------- ---------- ---------- --------------------

          2         4          13821           0       0

         64       128           124           0       0

      128       256             35           0       0

      256       512             14           0       0

      512     1024           473           0       0

     1024     2048           728           0       0

     2048     4096             6           0       0

 

7 rows selected.

最佳方法来执行排序。

查看每个进程的PGA使用情况:

select pid,category,allocated,used fromv$process_memory;

 

      PID CATEGORY      ALLOCATED          USED

---------- --------------- --------------------

          2 PL/SQL                   1976            224

          2 Other         972532

          3 PL/SQL                   1976            224

          3 Other         947740

          4 PL/SQL                   1976            224

          4 Other         947740

          5 PL/SQL                   1976            224

          5 Other         956108

          6 PL/SQL                   1976            224

          6 Other         947740

          7 SQL                         43936          8440

          7 PL/SQL                   26128         21608

          7 Freeable             917504              0

          7 Other        3976580

          8 PL/SQL                   1976            224

          8 Other         956108

          9 SQL                             0              0

          9 PL/SQL                   1976            224

          9 Freeable               65536             0

          9 Other        2791116

         10PL/SQL                   1976           224

         10Other         947740

         11PL/SQL                   1976           224

         11Freeable             131072              0

         11Other        2511916

         12PL/SQL                   1976           224

         12Freeable             786432              0

         12Other        9008508

         13PL/SQL                   1976           224

         13Freeable             393216              0

         13Other        2511916

         14PL/SQL                  1976            224

         14Freeable             393216              0

         14Other        2275412

         15SQL                         2000           296

         15PL/SQL                   1976           224

         15Freeable             262144              0

         15Other        1928780

         16SQL                             0              0

         16PL/SQL                   1976           224

         16Freeable             131072              0

         16Other        1799708

         17PL/SQL                   1976           224

         17Other         947740

         18PL/SQL                   1976           224

         18Other         947740

         19PL/SQL                   1976           224

         19Other         956108

         20PL/SQL                   1976           224

         20Other         947740

         21SQL                         36576             0

         21PL/SQL                312848         294744

         21Freeable            3276800              0

         21Other      12470676

         22SQL                             0              0

         22PL/SQL                   1976           224

         22Other        1603100

         23Other        1408468

         24PL/SQL                   1976           224

         24Other      62420508

         25Other         687572

         26PL/SQL                   1976           224

         26Other         947740

         27PL/SQL                   1976           224

         27Other         947740

         28PL/SQL                   1976           224

         28Other         947740

         29PL/SQL                   1976           224

         29Other         947740

         30SQL                         3024          1256

         30PL/SQL                   1976           224

         30Other        1796684

         31SQL                         7096           800

         31PL/SQL                   1976           224

         31Freeable             131072              0

         31Other        1710020

         33SQL                             0              0

         33PL/SQL                   1976           224

         33Freeable             131072              0

         33Other        1668636

         34SQL                         11904          2728

         34PL/SQL                   20704         16816

         34Freeable            7340032              0

         34Other        3546916

         35Other         687572

         36Other         687572

         37Other         687572

         38Other         687572

         39SQL                             0              0

         39PL/SQL                   1976           224

         39Other         947740

         41SQL                         3000             0

         41PL/SQL                264056         257616

         41Freeable             589824              0

         41Other        2255524

         42SQL                         5760          3552

         42PL/SQL                   1976           224

         42Other        1138588

 

98 rows selected.

评估实例启动以来,使用最佳、1遍、多遍PGA内存尺寸的工作区比例:

select name profile,cntcount,decode(total,0,0,round(cnt*100/total)) percentage from (select name,valuecnt,(sum(value) over()) total from v$sysstat where name like 'workarea exec%');

 

PROFILE                                                                COUNT PERCENTAGE

-------------------------------------------------------------------------- ----------

workarea executions - optimal                                                    15231     100

workarea executions - onepass                 &nbs

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

猜你喜欢

转载自blog.csdn.net/qq_43667669/article/details/86667467