Sql-Server
LOG 文件可以從索引沒有碎片的索引重建中填滿嗎?
在 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
命令。該命令執行的工作量取決於數據的碎片,但它是在小事務中完成的。