Sql-Server

索引碎片 - 日誌問題

  • March 17, 2020

我有幾個問題想了解,以便做出明智的決定。我不是專業的 DBA,我過去做過一些管理任務,現在我必須為我的一些新伺服器創建維護計劃,並了解我的舊伺服器的問題。

  1. 我的數據庫日誌大小為 50GB(將 MB 轉換為 GB),當我使用以下查詢時:
SELECT name, 
  size/128.0 FileSizeInMB,
  size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 AS EmptySpaceInMB
FROM sys.database_files;

它始終返回 25GB 作為空白空間。我的數據庫處於完全恢復模式,每小時備份一次日誌。在每小時事務備份後的某個時間點,此日誌文件是否會被修剪並減小日誌文件的大小? 2. 我們在晚上製定了碎片整理計劃。該計劃執行 15 分鐘並重建所有碎片級別高於 40% 的索引。我們的一位供應商的 DBA 解釋的方式是,在重建過程中,表被鎖定,因此使日誌文件增長。我不明白這一點。日誌文件不會在重建和重新組織中增長嗎?長期執行不能快速重新組織填滿日誌嗎? 3. 在每日索引重新組織後,我們應該多久更新一次統計資訊 - 立即或每週/每月?

在每小時事務備份後的某個時間點,此日誌文件是否會被修剪並減小日誌文件的大小?

不,它不會減少磁碟上日誌文件的大小。物理日誌文件由虛擬日誌文件 (VLF) 組成,每個 VLF 代表事務日誌的一部分。當 VLF 包含在事務日誌備份中時(因為沒有使用該 VLF 的活動事務),該 VLF 被標記為非活動並且可以被覆蓋。這些非活動 VLF 被視為日誌文件中的可用空間,因為如果需要,它們可以隨時被活動事務覆蓋。

可以縮小物理文件並回收磁碟空間,但一般不推薦,因為日誌文件很可能需要空間用於大型操作,例如索引維護,並且重新增長日誌文件是性能瓶頸。

SQL Server 中的事務日誌概述

我們的一位供應商的 DBA 解釋的方式是,在重建過程中,表被鎖定,因此使日誌文件增長。我不明白這一點。日誌文件不會在重建和重新組織中增長嗎?長期執行不能快速重新組織填滿日誌嗎?

索引維護操作(REBUILD、REORGANIZE 等)記錄在事務日誌中,即使是不鎖定基礎表的 ONLINE 操作。所以供應商的 DBA 說重建索引會導致日誌增長是正確的,但這不是由於表鎖定,而是因為它是日誌操作。

查看這些連結以獲取有關索引 DDL 期間空間使用率的更多資訊:

事務日誌磁碟空間

索引 DDL 的磁碟空間要求

在每日索引重新組織後,我們應該多久更新一次統計資訊 - 立即或每週/每月?

這取決於許多因素,基礎表/索引中有多少行,數據修改率,您是否在數據庫上使用跟踪標誌 2371 和自動更新統計資訊等?

此外,您重建索引的頻率是多少,因為與索引相關的統計資訊將同時更新,如果您的表具有聚集索引,那麼您的列統計資訊也應該得到更新。

如果您使用的是自動更新統計資訊,那麼您可以在此處了解更新統計資訊的門檻值。在此處類似問題的答案中也有一些有用的資訊。

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