不管怎麼強調sortheap的重要性都不為過

2021-08-29 08:38:55 字數 2179 閱讀 9004

今天看了一篇文章,覺得不管怎麼強調sortheap的重要性都不為過。理由我後面肯定會寫詳細的,這裡寫記錄下,占個位置:

----2007.07.10.00。13(沒想到是10號還以為9號呢 ,9號剛過

感覺學的不是很好,沒有達到目標,但還是把這2天學的寫上吧 。

1.sortheap在資料庫配置說明上是這樣的:定義要用於專用排序的專用記憶體頁的最大數目,或者要用於共享排序的共享記憶體頁的最大數目。現在這個專案並沒有啟動分割槽並行性,所以此引數只是表示要用於專用排序的專用記憶體頁的最大數目。不知道是我沒理解好,還是db2沒有說好,其實這個引數還有個很重要的作用:資料庫在執行雜湊連線sql的時候也用到此記憶體區域。db2  對2個表進行連線的時候,只有3種型別:巢狀,合併,雜湊。其中雜湊連線用的最多(我在執行複雜sql的時候是這樣的,簡單的沒有測試過大家可以測試下)。進行雜湊連線的時候,資料庫會把其中乙個表的內容複製到sortheap對應的記憶體中,如果sortheap對應的記憶體不夠大,就會吧餘下的資料庫複製到臨時表空間中。然後進行連線比較。可以想想操作記憶體和操作硬碟的差別吧,所以我們應盡量大的設定sortheap,使他不溢位到硬碟中,或者很少溢位。(關於上面3中巢狀,合併,雜湊連線型別,可以看下面的附件,附件中有很詳細的說明)

2.  檢視是否溢位的方法:

已分配的專用排序堆總數          = 0

已分配的共享排序堆總數                    = 0

共享排序堆高水位標記                      = 0

總計排序                          = 34600

總計排序時間(毫秒)              = 35491

排序溢位                            = 2384

活動排序數                                 = 0

和雜湊連線數                        = 38808

雜湊迴圈數                        = 0

雜湊連線溢位數                    = 534

小雜湊連線溢位數                  = 1

排序溢位 /總計排序   可以得到溢位比例  (如果溢位比例大於 3 個百分點,那麼在應用程式 sql 中會出現嚴重的或意外的排序問題。因為正是溢位的存在表明發生了大的排序,所以理想的情況是發現沒有排序溢位或至少其百分比小於乙個百分點。

如果出現過多的排序溢位,那麼「應急」解決方案是增加sortheap的大小。然而,這樣做只是掩蓋了真實的效能問題。相反,您應該確定引起排序的 sql 並更改該 sql、索引或群集來避免或減少排序開銷。如果溢位比例大於 5 (作為一種經驗之談),那麼每個事務的排序數可能很大。雖然某些應用程式事務執行許多小的組合排序(它們不會溢位並且執行時間很短),但是它消耗了過多的 cpu。當sortspertx很大時,按我的經驗,這些機器通常會受到 cpu 的限制。確定引起排序的 sql 並改進訪問方案(通過索引、群集或更改 sql)對提高事務吞吐率是極為重要的。)

雜湊連線數   就是在執行sql的時候進行雜湊連線的數目。這裡只說下雜湊迴圈數 的意義,其他引數的意義在下面的附件中都有很詳細的說明:  我在測試的時候,把sortheap設定為16個頁,然後執行複雜的sql,雜湊迴圈數有值,而且很高。一般看到雜湊迴圈數有值就要注意,他說明你的sortheap或者sheapthres(例項級引數)太低了。現在的測試情況就說明sortheap太低了。另外一種情況sheapthres太低的原因: sheapthres已經分配給前面的**程序了,再有**程序申請sortheap的時候,sheapthres已經達到上限了,這個時候db2就會給申請sortheap的程序很小的值,此時**程序進行雜湊連線的時候就需要把很多資料放到硬碟上,這個時候就會導致雜湊迴圈數值很高,這個時候大家可以增加 sheapthres進行觀察。

3.檢視排序溢位的sql方法: 首先開啟快照監視器:  db2 update monitor switches using sort on statements on ;

然後過段時間(1分鐘就可以了)執行 get snapshot for all on 資料庫名;

在輸出的資訊中查詢:語句排序溢位                    = 1   ,看對應的sql就知道了,對sql的執行計畫分析下就明白了。

記得在測試完要關閉 快照開關: db2 update monitor switches using sort off statements off;

不管怎麼選擇,都會有遺憾

到底什麼樣的選擇才是最好的,每一種選擇都會有遺憾!最近有點想家,雖然在這個城市安了新家。那個小的城市 延安,和這個大的城市 長沙,兩種感覺,不同的生活體驗。現在都十一月了,要是在延安,那麼現在已經是深秋,開始變得蕭條,不想夏天那麼生機盎然,而現在這個城市秋天和夏天在外觀上看不出什麼變化,只是現在的溫...

不管怎麼記都記不住的位運算

運算符號 運算說明 1.and運算 and運算通常用於二進位制的取位操作,例如乙個數 and 1的結果就是取二進位制的最末位。這可以用來判斷乙個整數的奇偶,二進位制的最末位為0表示該數為偶數,最末位為1表示該數為奇數。相同位的兩個數字都為1,則為1 若有乙個不為1,則為0。或者and 2.or運算 ...

什麼是HTML語義化標籤以及強調它的重要性

什麼是html語義化標籤 html語義化標籤也是html的所有標籤,css所有標籤 為什麼強調我們寫的時候要語義化 html語義化的所有標籤 1 定義上的 定義注釋。定義文件型別。定義 html 文件。定義文件的主體。定義客戶端指令碼。定義框架集的視窗或框架。定義框架集。定義關於文件的資訊。定義內聯...