Sql-Server-2008
獲取上次重新組織或重建索引日期
我目前正在將 sqlserver 2008r2 遷移到 SQL server 2016。我之前的 DBA 使用https://ola.hallengren.com/downloads.html中的“IndexOptimize”來創建 iIndex 解決方案。我可以看到該作業是按月安排並執行的,邏輯應用是:如果碎片 < 20 則重新組織索引 如果碎片 > 40 重建索引 我計劃通過 SSMS 使用維護計劃來重新組織或重建索引。我如何找到哪個已執行“重組/重建”,我可以看到某些表的碎片高於 66。認為重建索引沒有發生是正確的嗎?
正如 Aaron 在評論中提到的那樣,您看到的具有大量碎片的索引可能由於索引太小或太大而被跳過(預設情況下沒有索引太大)。
您可以在 sp 定義中搜尋以下參數,並檢查作業以確保未傳遞不同的值:
@MinNumberOfPages INT = 1000, @MaxNumberOfPages INT = NULL,
另一種可能是索引正在重建,然後再次重新分片。對我來說,這表明不斷重建該索引實際上並不是一個很好的幫助。
如果您正在尋找何時重建索引,Ola sp 確實具有記錄到表的能力,並且以前的 DBA 希望利用此功能。如果是這樣,您可以使用以下內容來確定上次重建索引的時間。
SELECT '[' + DatabaseName + '].[' + SchemaName + '].[' + ObjectName + ']' AS ObjectName, MAX(StartTime) FROM dbo.CommandLog WHERE CommandType = 'ALTER_INDEX' GROUP BY '[' + DatabaseName + '].[' + SchemaName + '].[' + ObjectName + ']'