首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 填充因子三大迷思:非永久生效、0等於100、非葉節點不保留空間

     編輯:關於SqlServer

迷思一:填充因子永遠有效

事實: 填充因子僅在索引建立或重建時生效。SQL Server 儲存引擎不會持續維持頁面空閒空間符合填充因子。若強制維持,頁面一滿就必須分頁,填充因子便失去意義。

迷思二:填充因子 0 與 100 不同

事實: 根據 Books Online:填充因子 0 和 100 在各方面完全相同,皆表示「頁面填滿」。

迷思三:填充因子 0 會在非葉節點保留空間

事實: 錯誤。填充因子 0/100 不會 在非葉節點保留空間。可透過以下腳本驗證:

CREATE DATABASE foo; GO USE foo; GO
CREATE TABLE t1 (c1 INT IDENTITY, c2 CHAR(1000) DEFAULT 'a');
CREATE CLUSTERED INDEX t1c1 ON t1(c1); GO
SET NOCOUNT ON; GO
INSERT INTO t1 DEFAULT VALUES; GO 10000
GO
ALTER INDEX t1c1 ON t1 REBUILD WITH (FILLFACTOR = 100); GO
-- 查看根頁與葉頁的 m_freeCnt(可用空間),皆為 10 bytes 左右,無額外保留。

總結

  • 填充因子 = 建立/重建時的「一次性留白設定」。
  • 0 = 100 = 頁面填滿。
  • 非葉節點不會因填充因子 0 而保留空間。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved