[20160112]儲存還是應用問題.txt

lfree發表於2016-01-12

[20160112]儲存還是應用問題.txt

--上個星期在ITPUB論壇裡遇到幾個關於磁碟效能地下的問題.
--主要連結如下:
http://www.itpub.net/thread-2050157-1-1.html
http://www.itpub.net/thread-2050439-1-1.html
http://www.itpub.net/thread-2050601-1-1.html

--都是表現為磁碟IO相關的等待時間比較大.論壇討論大部分認為是儲存出現問題.
--而其中連結:http://www.itpub.net/thread-2050439-1-1.html
--因為我們舊系統使用的就是該公司的產品,他們的連線數比我們小,而應用出現這個嚴重的效能問題.
--log file sync單次8354毫秒.

--如果仔細檢查可以發現大量索引沒有建立,而且看AWR報表發現:

Segments by Physical Reads

    Total Physical Reads: 5,752,157
    Captured Segments account for 94.1% of Total

Owner        Tablespace Name    Object Name        Subobject Name   Obj. Type   Physical Reads        %Total
PHARMACY     TSP_PHARMACY       DRUG_DISPENSE_REC                   TABLE            4,233,164        73.59
OUTPBILL     TSP_OUTPBILL       INVOICE_INFO                        TABLE              763,679        13.28
OUTPBILL     TSP_OUTPBILL       OUTP_BILL_ITEMS                     TABLE              371,704         6.46
OUTPDOCT     TSP_OUTPADM        OUTP_PRESC                          TABLE               18,007         0.31
INPBILL      TSP_INPBILL        INP_BILL_DETAIL                     TABLE                8,609         0.15

Back to Segment Statistics
Back to Top

Segments by Direct Physical Reads

    Total Direct Physical Reads: 5,599,810
    Captured Segments account for 95.8% of Total

Owner        Tablespace Name    Object Name        Subobject Name   Obj. Type   Direct Reads        %Total
PHARMACY     TSP_PHARMACY       DRUG_DISPENSE_REC                   TABLE          4,231,626        75.57
OUTPBILL     TSP_OUTPBILL       INVOICE_INFO                        TABLE            763,584        13.64
OUTPBILL     TSP_OUTPBILL       OUTP_BILL_ITEMS                     TABLE            371,366        6.63

--上下對比問題就很清楚了.
單獨拿DRUG_DISPENSE_REC來看:
Direct Physical Reads =4,231,626
Physical Reads = 4,233,164
-- 4233164-4231626=1538 ,真正的物理讀僅僅1538.

兩者基本相等.我認為Direct Physical Reads算作Physical Reads的一部分.

--看看前面的file IO統計:
Tablespace        Filename                                        Reads        Av Reads/s   Av Rd(ms)     Av Blks/Rd  Writes    Av Writes/s  Buffer Waits  Av Buf Wt(ms)
TSP_PHARMACY      /data/oracle/oradata/orcl/appharmacy.dbf        11,533       3            1593.96        123.35        356              0            2           0.00
TSP_PHARMACY      /data/oracle/oradata/orcl/appharmacy_1.dbf      11,292       3            1563.75        124.17        78               0            9         574.44
TSP_PHARMACY      /data/oracle/oradata/orcl/appharmacy_2.dbf      10,078       3            1519.08        125.44        103              0            3           0.00
TSP_PHARMACY      /data/oracle/oradata/orcl/appharmacy_3.dbf      1,326        0            3546.55        111.28        42               0          141         761.42

--因為檔案系統有快取,這裡相對很多.更覺得奇怪的是這麼點讀(在1個小時內對於伺服器就是PC機都不算什麼),很明顯這裡記數的讀是真正的物理讀.

--從以上來看就是直接路徑讀造成的問題.而選擇直接路徑讀主要問題是相關語句沒有最佳化或者建立合適的索引.

--我的建議:關閉直接路徑讀,自己google網上有許多帖子.alter system set "_serial_direct_read"=never scope=memory;

--可惜過去有一段時間,對方也沒有回覆,希望我的判斷是正確的,也許他使用的儲存也有問題,cache沒開啟,電池沒電等等因素.

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

相關文章