SQL Server 資料庫優化到底做了什麼

tolywang發表於2009-05-06

通過維護計劃嚮導來設定的,一般包括以下幾下步驟:

1. Rebuild Index
     重新生成索引將刪除該索引並重新建立一個新的索引。此過程中將刪除碎片,通過使用指定的或現有的填充因子設定壓縮頁來回收磁碟空間,並在連續頁中對索引進行重新排序(根據需要分配新頁)。這樣可以減少獲取所請求資料需要的頁讀取數,從而提高磁碟效能。

2. Update statistics
     更新索引統計資訊,確保查詢優化器含有關於表中資料值頒佈的最新資訊。這使得查詢優化器能夠更好地確定訪問資料的最佳方法,因為可以獲得資料庫中儲存資料的詳細資訊。SQL SERVER也可以定期自動更新索引統計資訊,但此選項可以對統計資訊進行立即強制更新。

3. Remove unused space
     通過刪除空資料頁來壓縮資料檔案

 

線上優化需要哪些條件?
             SQL Server2000提供了兩種修復索引碎片的辦法:     重新組織索引(Reorganize index)和重新生成索引(Rebuild Index).其中重新生成索引整個過程需要刪除索引後重新建立,外部過程無法訪問資料表。SQL SERVER2005才引入聯機重新生成索引,所以目前我們要做rebuild index動作還是得offline執行。如果需要線上做優化,可以考慮重新組織索引。重新組織索引會對最外層資料頁裡的資料重新排序,並壓縮索引頁。這個過程不會新增任何額外的資料,但索引可能還殘留一定程度的碎片。重新組織索引不會佔用很多系統資源,在執行過程中也能夠對該索引所在的資料表進行查詢,所以可以算聯機(online)執行.

 

完整的執行語句:         EXECUTE master.dbo.xp_sqlmaint N' -PlanID 9616B762-F593-4A7E-825A-6B47D5918A65 -WriteHistory -RebldIdx 10 '
使用sqlmaint工具,每週週一3:10執行一次優化動作,以填充因子90重新生成索引.

參考:sqlmaint實用工具介紹    http://technet.microsoft.com/zh-cn/library/ms162827(SQL.90).aspx

-RebldIdx free_space  
指定應使用 free_space 百分比值作為填充因子的反數,重新生成目標資料庫的表索引。例如,如果 free_space 百分比是 30,則使用的填充因子為 70。如果指定 free_space 百分比值為 100,則使用原始填充因子值重新生成索引。


-WriteHistory
指定在 msdb.dbo.sysdbmaintplan_history 中,  為 sqlmaint 執行的每次維護操作生成一個專案。如果指定了 -PlanName 或 -PlanID,則 sysdbmaintplan_history 中的專案將使用指定計劃的 ID。如果指定了 -D,則通過給計劃 ID 賦予零值來生成 sysdbmaintplan_history 中的專案。   

 

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

相關文章