Sql-Server-2008

獲取上次重新組織或重建索引日期

  • July 5, 2019

我目前正在將 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 + ']' 

引用自:https://dba.stackexchange.com/questions/242184