六內存排序
OLTP 應用程序不應該執行大的排序它們在 CPUI/O 和所用時間方面的成本極高而且將使任何 OLTP 應用程序慢下來因此 個 K 頁(MB)的缺省SORTHEAP大小(MB)應該是足夠了您也應該知道排序溢出的數量和每個事務的排序數
請發出以下命令
Db get snapshot for database on DBNAME
並查找以下行
Total sort heap allocated=
Total sorts =
Total sort time (ms)=
Sort overflows =
Active sorts =
Commit statements attempted =
Rollback statements attempted =
Let transactions = Commit statements attempted + Rollback
statements attempted
Let SortsPerTX= Total sorts / transactions
Let PercentSortOverflows = Sort overflows * / Total sorts
如果PercentSortOverflows ((Sort overflows * ) / Total sorts )大於 個百分點那麼在應用程序 SQL 中會出現嚴重的或意外的排序問題因為正是溢出的存在表明發生了大的排序所以理想的情況是發現沒有排序溢出或至少其百分比小於一個百分點
如果出現過多的排序溢出那麼應急解決方案是增加SORTHEAP的大小然而這樣做只是掩蓋了真實的性能問題相反您應該確定引起排序的 SQL 並更改該 SQL索引或群集來避免或減少排序開銷
如果SortsPerTX大於 (作為一種經驗之談)那麼每個事務的排序數可能很大雖然某些應用程序事務執行許多小的組合排序(它們不會溢出並且執行時間很短)但是它消耗了過多的 CPU當SortsPerTX很大時按我的經驗這些機器通常會受到 CPU 的限制確定引起排序的 SQL 並改進存取方案(通過索引群集或更改 SQL)對提高事務吞吐率是極為重要的
七表訪問
對於每個表確定 DB 為每個事務讀取的行數您必須發出兩個命令
db get snapshot for database on DBNAME
[] [] [] [] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/DB2/201311/21950.html