Sql-Server

什麼是 SplitPage 作為事務名稱?

  • August 10, 2016

當我執行函式 fn_dblog 以從 SQL Server 事務日誌中獲取一些資訊時——我只是在有時只刪除某些內容之後——我現在為此設置了伺服器端跟踪。

我以為我可以看到與我從事務日誌中神秘刪除有關的內容,但它們每 15 分鐘備份一次……

無論如何,在使用下面的查詢查看事務日誌時,我看到了:

select * from fn_dblog (null, null)
where spid is not null
order by [begin time] desc

在此處輸入圖像描述

是因為插入的行不適合聚集索引的頁面,因此必須在其他地方創建為它們分配新頁面?

這是否表明 FILLFACTOR 太高了?

我會說如果填充因子太高,僅僅閱讀事務日誌不會給你一個好主意。請記住,頁面拆分並不總是一件壞事,而且它們是必要的。

您的填充因子是在創建和重建索引時設置的,所以我會看看如果您使用 Ola 的維護解決方案,您的索引需要多久重建一次,它會為您跟踪。使用 Ola 的 Command Log 表等工具,根據索引大小、表大小、鍵值類型來判斷填充因子。您通常可以將填充因子設置為 100,然後重新評估命令日誌中是否有很多索引重建命令。

像在您的範例中那樣在頁面拆分期間創建的新頁面不會根據您的填充因子分配空白空間,它們只會根據新數據的需要填充頁面。

一般來說,一個好的聚集索引鍵總是在遞增的,所以每次頁面拆分都只是在索引的末尾分配一個新頁面。這對 varchar 列會有所改變,因為它們可能會在更新期間導致頁面拆分。

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