Sybase
Sybase ASE 15“reorg rebuild”修復了性能問題——為什麼以及如何判斷何時需要它?
我在 Sybase ASE 15 伺服器中有一個包含幾百萬行的表,執行速度非常慢,即使是基本查詢也需要 5 分鐘才能執行,例如:
SELECT COUNT(1) FROM TABLENAME;
在Google搜尋問題後,我發現在表上執行重組重建解決了這個問題。
有沒有辦法確定表何時需要重新組織重建,或者何時執行重新組織重建會導致性能提升?
是否應該定期執行重組重建?如果有,在什麼情況下?
重組重建修復的降級的根本原因是什麼?可以避免嗎?
當一個表第一次被索引時,尤其是使用聚集索引時,記錄是有序的,並且有最少數量的索引頁來查找每條記錄。隨著更新、插入和刪除的發生,索引頁的數量會增加。隨著時間的推移,這將影響查詢性能。建議 dba 定期執行 reorgs 以收集垃圾、壓縮數據庫和壓縮索引頁。reorgs 的缺點是,在 15.7 之前,它們會阻止對錶的訪問,因此通常必須在非工作時間執行。
1 - 根本原因是什麼?
數據庫中的插入/更新/刪除活動會創建額外的數據庫頁面和索引頁面。查詢必須讀取的頁面越多以獲取它正在尋找的數據,查詢所需的時間就越長。
2 - 是否應該定期執行 reogs?
大概。靜態的或很少更改的表很少需要它,但隨著表上活動的增加,重組的需求也會增加。
我應該如何確定何時執行?
這取決於您所處的環境。重組的需要與表的插入/更新/刪除活動直接相關。您可以使用optdiag命令檢查表的健康狀況,仔細查看以下一些值: 索引頁面集群比率; 數據頁集群率; 空數據頁數; 空葉頁; 刪除的行數; 轉發行數; 索引空葉頁數。
查看optidag上的Sybase 文件和reorg上的 Sybase 文件,以了解如何確定何時在您的環境中執行 reorgs。