Sql-Server

我應該如何(重新)索引表,同時保持事務日誌很小?

  • January 19, 2015

我在數據庫中有一個 170 GB 的表。它的索引上有 70% 的碎片(索引中有多個列)。上次我嘗試DBCC REINDEX事務日誌時爆炸了數百 GB。

  1. 我應該刪除索引並重新創建它還是執行DBCC REINDEX
  2. 做任何一個的最佳方法是什麼?
  3. 在保持事務日誌盡可能小的同時,我怎樣才能做到這一點?

DBCC REINDEX 最少記錄在 SIMPLE 或 BULK_LOGGED 恢復模型中。如果數據庫目前處於 FULL 恢復模式,請考慮將其切換到 BULK_LOGGED 以進行索引維護。

請參閱http://technet.microsoft.com/en-us/library/ms191484(v=sql.105).aspx

從 2008 年開始,索引重建完全以完全恢復模式登錄。如果你在完全恢復模式下重建巨大的索引,它必然會產生過多的日誌。那麼在這張表中你有多少個索引?您是否一口氣重建所有此類索引。如果你正在這樣做,你必須考慮做它。一次一個索引

當然,您可以在重建索引時切換到批量日誌恢復模式,但您會在索引重建操作進行期間失去時間點恢復。索引重建完成後,如果您仍然繼續使用批量記錄恢復模式並且完成了一些未定義為最低限度登錄的事務,則它們將被完全記錄在 BL 恢復模式中

在切換到批量日誌恢復模型之前考慮以下內容

  1. 進行事務日誌備份。這很重要,因為在大容量日誌恢復模式下,如果數據庫出現故障,為大容量操作備份日誌需要訪問數據。
  2. 執行批量操作後,您立即切換回完全恢復模式。
  3. 從大容量日誌恢復模式切換回完整恢復模式後,您需要再次備份日誌。
  4. 如果您要切換到大容量日誌記錄,請嘗試確保索引重建只是正在進行的操作,儘管這不是限制。
  5. 此外,以任何恢復模式登錄都不會影響物理文件大小。所以不要期望日誌文件的批量記錄恢復模型大小會減少

使用 Ola Hallengren 進行索引重建和統計更新。

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