【調優篇基本原理】系統統計資訊

yellowlee發表於2010-07-27

10g使用以cpu開銷為主,兼顧io開銷的開銷模型,oracle優化器很依賴系統的cpuio效能,故收集系統統計資訊是非常重要的。

看一個查詢:

 

SQL> select * from sys.aux_stats$;

 

SNAME                          PNAME            PVAL1            PVAL2

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

SYSSTATS_INFO                  STATUS                         COMPLETED

SYSSTATS_INFO                  DSTART                         02-17-2008 02:28

SYSSTATS_INFO                  DSTOP                          02-17-2008 02:28

SYSSTATS_INFO                  FLAGS                  1

SYSSTATS_MAIN                  CPUSPEEDNW    576.865795

SYSSTATS_MAIN                  IOSEEKTIM             10

SYSSTATS_MAIN                  IOTFRSPEED          4096

SYSSTATS_MAIN                  SREADTIM           

SYSSTATS_MAIN                  MREADTIM             

SYSSTATS_MAIN                  CPUSPEED                

SYSSTATS_MAIN                  MBRC                                 

SYSSTATS_MAIN                  MAXTHR                          

SYSSTATS_MAIN                  SLAVETHR                                 

 

13 rows selected

可以看到SYSSTATS_INFOstatuscompleted,代表成功收集了系統統計資訊,而SYSSTATS_MAIN下面的CPUSPEEDNWIOSEEKTIMIOTFRSPEED,表示的是noworkload statistics,非工作量系統統計資訊,隨後的SREADTIMMREADTIMCPUSPEEDMBRCMAXTHRSLAVETHR則為工作量統計,示意的庫並沒有工作量統計資訊

 

可以使用下列語句來完成收集工作量統計資訊的工作:

begin

Dbms_stats.gather_system_stats(gathering_mode => 'start'

                               );

end;

/

可以看到'SYSSTATS_TEMP下的一些資訊,代表目前正在收集統計資訊:

SQL> select a.pname,a.pval1,a.pval2

  2   from sys.aux_stats$ a where a.sname = 'SYSSTATS_TEMP';

 

PNAME                               PVAL1 PVAL2

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

CACHE_JOB                               1

CPUCYCLES                        11538660

CPUTIM                           22621138

JOB                                     0

MBLKRDS                             11764

MBLKRDTIM                           29600

MBRTOTAL                           277943

SBLKRDS                            190001

SBLKRDTIM                           70980

 

9 rows selected

 

使用下列語句來結束收集

begin

Dbms_stats.gather_system_stats(gathering_mode => 'stop'

                               );

end;

/

SQL> select a.pname,a.pval1 from sys.aux_stats$ a where a.sname = 'SYSSTATS_MAIN' ;

 

PNAME                               PVAL1

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

CPUSPEED                              510

CPUSPEEDNW                     576.865795

IOSEEKTIM                              10

IOTFRSPEED                           4096

MAXTHR                         

MBRC                          

MREADTIM                      

SLAVETHR                      

SREADTIM                              0.6

 

9 rows selected

 

具體列出上述涉及到的一些統計資訊:

CPUSPEED

負載下的cpu速度,即每秒鐘的cpu週期數(單位是百萬次millon)

CPUSPEEDNW

無負載cpu速度,通過設定gathering_mode=NOWORKLOAD或者手動設定統計。

IOSEEKTIM

Io的查詢時間,通過設定gathering_mode=NOWORKLOAD或者手動設定統計,單位是ms

IOTFRSPEED

Io的傳輸速度,通過設定gathering_mode=NOWORKLOAD或者手動設定統計,單位是bytes/ms

MAXTHR

最大的io吞吐量,bytes/sec

MBRC

多塊讀的平均每次讀的塊的數量,單位是block

MREADTIM

順序讀多塊的平均時間

SLAVETHR

平均並行io吞吐量

SREADTIM

隨即讀單塊的平均時間

 

Dbms_stats還提供了鎖定和解鎖統計資訊的方法:

Lock_schema_stats或者lock_table_stats用來鎖定

Unlock_schema_stats或者unlock_table_stats用來解鎖

 

 

 

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16179598/viewspace-669632/,如需轉載,請註明出處,否則將追究法律責任。

相關文章