小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Statspack之十二-db file scattered read-DB文件分散讀取

 aaie_ 2012-04-19

這種情況通常顯示與全表掃描相關(guān)的等待。
當(dāng)數(shù)據(jù)庫進(jìn)行全表掃時,基于性能的考慮,數(shù)據(jù)會分散(scattered)讀入Buffer Cache。如果這個等待事件比較顯著,
可能說明對于某些全表掃描的表,沒有創(chuàng)建索引或者沒有創(chuàng)建合適的索引,我們可能需要檢查這些數(shù)據(jù)表已確定是否進(jìn)
行了正確的設(shè)置。

然而這個等待事件不一定意味著性能低下,在某些條件下Oracle會主動使用全表掃描來替換索引掃描以提高性能,這
和訪問的數(shù)據(jù)量有關(guān),在CBO下Oracle會進(jìn)行更為智能的選擇,在RBO下Oracle更傾向于使用索引。

因?yàn)槿頀呙璞恢糜贚RU(Least Recently Used,最近最少適用)列表的冷端(cold end),對于頻繁訪問的較
小的數(shù)據(jù)表,可以選擇把他們Cache到內(nèi)存中,以避免反復(fù)讀取。

當(dāng)這個等待事件比較顯著時,可以結(jié)合v$session_longops動態(tài)性能視圖來進(jìn)行診斷,該視圖中記錄了長時間(運(yùn)
行時間超過6秒的)運(yùn)行的事物,可能很多是全表掃描操作(不管怎樣,這部分信息都是值得我們注意的)。

我們通過通過一個案例分析來熟悉一下這個等待事件:

 

DB Name        DB Id     Instance    Inst Num  Release     OPS   Host         
----------  -----------  ----------  --------  ----------  ----  ----------   
K2        1999167370      k2              1  8.1.5.0.0   NO      k2       


這是一個8.1.5的數(shù)據(jù)庫系統(tǒng),通過腳本增強(qiáng),我們可以在8.1.5的數(shù)據(jù)庫上使用statspack來進(jìn)行數(shù)據(jù)庫診斷。

                                                             Snap Length   
Start Id    End Id       Start Time             End Time         (Minutes)    
--------  --------  --------------------  --------------------  -----------   
     170       176  25-Feb-03 10:00:11    25-Feb-03 15:00:05         299.90   

Cache Sizes                                                                   
~~~~~~~~~~~                                                                   
           db_block_buffers:       64000                                      
              db_block_size:        8192                                      
                 log_buffer:     8388608                                      
           shared_pool_size:   157286400                                      
                                                                              
………………                    
                                                                              
Top 5 Wait Events                                                             
~~~~~~~~~~~~~~~~~                                                     Wait  % Total
Event                                          Waits     Time (cs)  Wt Time
-------------------------------------------- ------------ ----------------------- -------
db file scattered read                         16,842,920             3,490,719   43.32
latch free                                     844,272      3,270,073   40.58
buffer busy waits                               114,421          933,136   11.58
db file sequential read                          2,067,910         117,750    1.46
enqueue                                          464          110,840    1.38
         -------------------------------------------------------------        

這是一個典型的性能低下的系統(tǒng),幾個重要的等待事件都在Top 5中出現(xiàn),其中,前3個等待極為顯著,需要進(jìn)行
相應(yīng)的調(diào)整。
在5小時的采樣間隔內(nèi),其中db file scattered read累計等待時間約10小時,已經(jīng)成為影響系統(tǒng)性能的主要原因。
了解了這些以后我們就可以進(jìn)一步察看相關(guān)SQL看是否存在可以的SQL語句。

SQL ordered by Gets for DB: K2  Instance: k2  Snaps:     170 -    176   
                                                                              
                                Gets       % of                               
   Buffer Gets     Executes   per Exec    Total   Hash Value                  
-------------- ------------ ------------ ------ ------------                  
SQL statement                                                                 
------------------------------------------------------------------------------
     6,480,163           12    540,013.6    2.4   3791855498                  
  SELECT "PROCESS_REQ"."WORK_ID", "PROCESS_REQ"."STOCK_NO",    "PROCESS_R
                                                                              
     3,784,566           16    236,535.4    1.4   2932917818                  
SELECT * FROM FIND_LATER_WO ORDER BY NOTE,ORDER_NO                            
                                                                                
     1,200,976            3    400,325.3     .4   4122791109                  
  SELECT "ITEM_STOCK"."ITEM_NO",              "ITEM"."NOTE",            "ITEM"
                                                                               
       923,944            9    102,660.4     .3   2200071737                  
  SELECT  "ITEM_STOCK"."ITEM_NO" ,           "ITEM_STOCK"."STOCK_NO" ,        
                                                                              
       921,301            3    307,100.3     .3   2218843294                  
  SELECT "ITEM_STOCK"."ITEM_NO",              "ITEM"."NOTE",            "ITEM"
                                                                              
       911,285            3    303,761.7     .3   1769130587                  
  SELECT  "LISTS"."ITEM_NO" ,           "LISTS"."SUB_ITEM" ,           "LISTS"
                                                                              
       831,439            2    415,719.5     .3   1349577999                  
  SELECT  "GROUP_OPER"."ITEM_NO" ,           "GROUP_OPER"."PROCESS_ID" ,      
                                                                              
       802,918            1    802,918.0     .3   3613809507                  
  SELECT  "LISTS"."ITEM_NO" ,           "LISTS"."SUB_ITEM" ,           "ITEM".
                                                                              
       800,548            2    400,274.0     .3   2643788247                  
  SELECT "ITEM_STOCK"."ITEM_NO",              "ITEM"."NOTE",            "ITEM"
                                                                              
       666,085            2    333,042.5     .2   3391363608                  
  SELECT "ITEM_STOCK"."ITEM_NO",              "ITEM_STOCK"."STOCK_NO",        
          ………..                                                               

注意到以上很多查詢導(dǎo)致的Buffer Gets都非常龐大,我們非常有理由懷疑索引存在問題,甚至缺少必要的索引。
以上記錄的是SQL的片段,通過Hash Value值結(jié)合v$sql_text我們可以獲得完整的SQL語句。

在這次診斷中,我緊接著去查詢的是v$session_longops數(shù)據(jù)表,一個分組查詢的結(jié)果如下:

TARGET                                  COUNT(*)
---------------------------------------------------------------- ----------
SA.PPBT_GRAPHOBJTABLE                  418
SA.PPBT_PPBTOBJRELATTABLE              53

我們發(fā)現(xiàn)這些問題SQL的全表掃描(結(jié)合v$session_longops視圖中的OPNAME)主要集中在PPBT_GRAPHOBJTABLE和
PPBT_PPBTOBJRELATTABLE兩張數(shù)據(jù)表上。
進(jìn)一步研究發(fā)現(xiàn)這兩個數(shù)據(jù)表上沒有任何索引,并且有相當(dāng)?shù)臄?shù)據(jù)量:

SQL> select count(*) from SA.PPBT_PPBTOBJRELATTABLE;

  COUNT(*)
----------
   1209017
 SQL> select count(*) from SA.PPBT_GRAPHOBJTABLE;

   COUNT(*)
----------
      2445

在創(chuàng)建了合適的索引后,系統(tǒng)性能得到了大幅提高!
       
                      

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多