在某些情況下,實際壓縮或擴充 SQL Server 資料庫事務歷史記錄檔可能會很有用。 本主題包含如何監視 SQL Server 事務歷史記錄大小、壓縮事務歷史記錄、新增或放大事務歷史記錄檔、優化 tempdb 事務歷史記錄成長率,以及控制事務歷史記錄檔成長的相關信息。
監視記錄空間使用
您可以使用 DBCC SQLPERF (LOGSPACE) 來監視記錄空間的使用。 此命令會傳回目前使用的記錄空間數量相關信息,並指出事務歷史記錄何時需要截斷。 如需詳細資訊,請參閱 DBCC SQLPERF (Transact-SQL)。 如需記錄檔目前大小、大小上限和檔案自動成長選項的相關信息,您也可以在 sys.database_files 中使用該記錄檔的大小、max_size和成長數據行。 如需詳細資訊,請參閱 sys.database_files (Transact-SQL)。
這很重要
建議您避免多載記錄磁碟。
壓縮記錄檔的大小
若要減少實體記錄檔的實體大小,則必須壓縮記錄檔。 如果您知道事務歷史記錄檔包含您不需要的未使用空間,這會很有用。 只有在資料庫處於在線狀態,而且至少有一個虛擬記錄檔是免費的時,才會壓縮記錄檔。 在某些情況下,在下次記錄截斷之前,可能無法壓縮記錄檔。
備註
長時間執行的交易等因素可能會限制記錄壓縮,甚至防止記錄檔完全壓縮。 如需可能會延遲記錄截斷的因素相關信息,請參閱 事務歷史記錄 (SQL Server) 。
壓縮記錄檔會移除一或多個不保存邏輯記錄檔任何部分的虛擬記錄檔(也就是 非使用中虛擬記錄檔)。 當事務歷史記錄檔壓縮時,會將足夠的非使用中虛擬記錄檔從記錄檔結尾移除,以將記錄縮減為大約目標大小。
壓縮記錄檔(不含壓縮資料庫檔案)
監視記錄檔壓縮事件
To monitor log space
sys.database_files (Transact-SQL) (請參閱記錄檔或檔案 的大小、 max_size和 成長 數據行。
備註
壓縮資料庫和記錄檔可以設定為自動發生。 不過,我們建議使用自動壓縮,而且 autoshrink 資料庫屬性預設會設定為 FALSE。 如果 autoshrink 設定為 TRUE,則只有在超過 25% 的空間未使用時,自動壓縮才會減少檔案的大小。 此時,檔案將縮小到以檔案中只有 25% 的空間未被使用的大小,或維持檔案的原始大小,取兩者中較大的。 如需變更屬性設定autoshrink的相關信息,請參閱 [選項] 頁面上的 [檢視] 或 [變更資料庫的屬性],或 [選項] 頁面上的 [自動壓縮] 屬性或 ALTER DATABASE SET Options (Transact-SQL)-使用 [AUTO_SHRINK] 選項。
新增或放大記錄檔
或者,您可以藉由擴大現有的記錄檔(如果允許磁碟空間),或將記錄檔新增至資料庫,通常是在不同的磁碟上取得空間。
若要將記錄檔新增至資料庫,請使用 ALTER DATABASE 語句的 ADD LOG FILE 子句。 新增記錄檔可讓記錄檔成長。
若要放大記錄檔,請使用 ALTER DATABASE 語句的 MODIFY FILE 子句,並指定 SIZE 和 MAXSIZE 語法。 如需詳細資訊,請參閱< ALTER DATABASE (Transact-SQL)>。
將 tempdb 事務歷史記錄的大小優化
重新啟動伺服器實例會將 tempdb 資料庫的交易紀錄檔大小調整為原始、自動成長前的大小。 這可以降低 tempdb 事務歷史記錄的效能。 啟動或重新啟動伺服器實例之後,您可以增加 tempdb 事務歷史記錄的大小,以避免此額外負荷。 如需詳細資訊,請參閱 tempdb資料庫。
控制事務歷史記錄檔的成長
您可以使用 ALTER DATABASE (Transact-SQL) 語句來管理事務歷史記錄檔的成長。 請注意下列事項:
若要以 KB、MB、GB 和 TB 單位變更目前的檔案大小,請使用 SIZE 選項。
若要變更成長增量,請使用 FILEGROWTH 選項。 0 的值表示將自動成長設為關閉,且不允許任何額外的空間。 記錄檔的小自動成長幅度可能降低效能。 記錄檔的檔案成長量應夠大,才不用經常進行擴充。 默認成長增量為 10% 通常適用。
如需變更記錄檔上檔案成長屬性的資訊,請參閱 ALTER DATABASE (Transact-SQL) 。
若要控制以 KB、MB、GB 和 TB 單位為單位的記錄檔大小上限,或將成長設定為 UNLIMITED,請使用 MAXSIZE 選項。