[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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/267265/viewspace-1975102/