Sql-Server

可以選擇使用 OLA 的腳本排除某些分區

  • September 1, 2019

我已經使用 OLA 的腳本很長時間了,我很喜歡它們。

我有一個非常大的數據庫 - 20+ TB 有數百個分區表。

我通過刪除(合併舊分區)來清除舊數據。

它按日期分區,每週分區可以追溯到大約 6 個月。我必須按分區執行每日索引維護,以保持跟上的希望(實際上永遠不會趕上)。

我現在在 SQL 2017 上,並且正在嘗試使用Resumable選項按分區進行線上重建。

我發現每天我都在重建幾乎每個表中的目前分區,因為它總是碎片化,並且由於大量的插入,明天可能會再次碎片化。

我想做的是排除這個分區。

這是目前日期所在的分區。

即,我只想重建過去的分區。

將此作為選項將非常有幫助。

將此作為選項將非常有幫助。

Ola 的腳本現在在 github 上,並且已經有一個功能請求。

從 OLA 中省略該表,並將其作為一個單獨的步驟重新索引有問題的段。

/*https://www.mssqltips.com/sqlservertip/1914/sql-server-database-partitioning-myths-and-truths/ */

-- to return fragmentation information on partitioned indexes
SELECT
object_name(a.object_id) AS object_name,
a.index_id,
b.name,
b.type_desc,
a.partition_number,
a.avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL , NULL, 'LIMITED') a
JOIN sys.indexes b on a.object_id = b.object_id and a.index_id = b.index_id
order by object_name(a.object_id), a.index_id, b.name, b.type_desc, a.partition_number


--Rebuild only partition 11.
ALTER INDEX IX_alert_events_timestamp
ON dbo.alert_events
REBUILD Partition = 11;
GO

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