Sql-Server

LOG 文件可以從索引沒有碎片的索引重建中填滿嗎?

  • May 22, 2019

在 SQL Server 2014 上工作。

我注意到過去一天內數據庫上的一個日誌文件 (60GB) 已填滿。據我所知,我是唯一使用此數據庫的開發人員,並且我已經有一個多星期沒有在數據庫上執行任何事務了。我問 DBA 是否有其他人在使用該數據庫,但他們不這麼認為。DBA 提到自動索引重建作業可能會填滿日誌。

我的問題是,每小時執行的自動索引重建作業能否填滿日誌文件?我在這裡的假設是索引不會碎片化,因此重建索引不會有任何工作。因此,日誌文件不應填滿。這個假設是錯誤的嗎?我是否遺漏了 SQL Server 索引重建的工作方式以及這可能如何影響日誌文件?

更新

我們正在使用 Ola 的解決方案:點擊這裡

EXECUTE [dbo].[DatabaseBackup]
@Databases = 'USER_DATABASES',
@Directory = N'\\DirectoryPath\',
@MirrorDirectory = N'\\DirectoryPath\',
@BackupType = 'LOG',
@Verify = 'Y',
@CleanupTime = 48,
@MirrorCleanupTime=24,
@CheckSum = 'Y',
@LogToTable = 'Y',
@Compress = 'Y'

我的問題是,每小時執行的自動索引重建作業能否填滿日誌文件?

是的。索引重建通常會重寫索引中包含的所有數據。我不知道有什麼例外,但可能有一些。從文件中:

重建索引會刪除並重新創建索引。這會消除碎片,通過根據指定或現有的填充因子設置壓縮頁面來回收磁碟空間,並重新排序連續頁面中的索引行。

你還問:

我在這裡的假設是索引不會碎片化,因此重建索引不會有任何工作。因此,日誌文件不應填滿。這個假設是錯誤的嗎?

碎片並不重要,因為創建了數據的新副本。您可能正在考慮REORGANIZE命令。該命令執行的工作量取決於數據的碎片,但它是在小事務中完成的。

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