Sql-Server
刪除過程中極度膨脹的事務日誌
現在,我知道在大刪除期間日誌會變大,應該嘗試將其分成批次。但我覺得這種情況很奇怪,如果有人可以向我解釋,那就太好了!
我有一個 27GB 的數據庫和大約 30GB 的日誌。正在刪除的表大小約為 15GB,其中包含 2000 萬條記錄。該表有 20 列,只有 bigint 和 int 數據類型。
刪除操作正在從相關表中刪除 1800 萬條重複記錄。我已經切換選擇刪除以確保記錄計數匹配並且確實如此。
在我用完磁碟空間並被迫回滾之前,日誌增長到大約 110GB。
表上沒有觸發器,但有 16 個非聚集索引,沒有聚集索引。如果我在執行操作之前禁用所有索引,它將完成而不會從原始大小增加日誌。
所以我的問題是,從表中刪除時,我是否記錄了每個索引的每次刪除?如果是這樣,這是正常行為還是可能是因為缺少聚集索引?
所以我的問題是,從表中刪除時,我是否記錄了每個索引的每次刪除?
你當然是。該日誌包含對每個頁面的每次更改的記錄,其中包含足以重做或撤消更改的詳細資訊。
如果是這樣,這是正常行為還是可能是因為缺少聚集索引?
無關。您將從17 個單獨的“索引”、16 個非聚集索引和一個堆中的每一個中刪除 1800 萬行。
並且禁用/重建非聚集索引比刪除/創建它們更安全,因為索引定義保留在伺服器上。
是的,索引修改的記錄方式與“數據”修改幾乎相同。