在建立聚集索引時,表中的資料按照索引列中的值的順序儲存在資料庫的資料頁中。在表中插入新的資料行或更改索引列中的值時,microsoft® sql server™ 2000 可能必須重新組織表中的資料儲存,以便為新行騰出空間,保持資料的有序儲存。這同樣適用於非聚集索引。新增或更改資料時,sql server 可能不得不重新組織非聚集索引頁中的資料儲存。向乙個已滿的索引頁新增某個新行時,sql server 把大約一半的行移到新頁中以便為新行騰出空間。這種重組稱為頁拆分。頁拆分會降低效能並使表中的資料儲存產生碎片。top
建立索引時,可以指定乙個填充因子,以便在索引的每個葉級頁上留出額外的間隙和保留一定百分比的空間,供將來表的資料儲存容量進行擴充和減少頁拆分的可能性。填充因子的值是從 0 到 100 的百分比數值,指定在建立索引後對資料頁的填充比例。值為 100 時表示頁將填滿,所留出的儲存空間量最小。只有當不會對資料進行更改時(例如,在唯讀表中)才會使用此設定。值越小則資料頁上的空閒空間越大,這樣可以減少在索引增長過程中對資料頁進行拆分的需要,但需要更多的儲存空間。當表中資料會發生更改時,這種設定更為適當。
提供填充因子選項是為了對效能進行微調。但是,使用 sp_configure 系統儲存過程指定的伺服器範圍的預設填充因子,在大多數情況下都是最佳的選擇。
說明 即使對於乙個面向許多插入和更新操作的應用程式來說,資料庫讀取次數一般也超過資料庫寫入次數的 5 到 10 倍。因此,指定乙個不同於預設設定的填充因子會降低資料庫的讀取效能,而降低量與填充因子設定值成反比。例如,當填充因子的值為 50% 時,資料庫的讀取效能會降低兩倍。
只有當在表中根據現有資料建立新索引,並且可以精確預見將來會對這些資料進行哪些更改時,將填充因子選項設定為另乙個值才有用。
填充因子只在建立索引時執行;索引建立後,當表中進行資料的新增、刪除或更新時,不會保持填充因子。如果試圖在資料頁上保持額外的空間,則將有背於使用填充因子的本意,因為隨著資料的輸入,sql server 必須在每個頁上進行頁拆分,以保持填充因子指定的空閒空間百分比。因此,如果表中的資料進行了較大的變動,新增了新資料,可以填充資料頁的空閒空間。在這種情況下,可以重新建立索引,重新指定填充因子,以重新分布資料。
mysql的填充因子 資料庫索引的填充因子
舉個例子 假定你剛剛用預設的填充因子新建立了乙個索引。當sqlserver建立它時,它把索引放在相鄰的物理頁面上,因為資料能夠順序的讀所以這樣會有最優的i o訪問。但當表隨著 增加和改變時,發生了頁拆分。當頁拆分發生時,sqlserver必須在磁碟的某處分配乙個新的頁,這些新的頁和最初的物理頁不是連...
索引的填充因子
建立索引時,可以指定乙個填充因子,以便在索引的每個葉級頁上留出額外的間隙和保留一定百分比的空間,供將來表的資料儲存容量進行擴充和減少頁拆分的可能性。填充因子的值是從 0 到 100 的百分比數值,指定在建立索引後對資料頁的填充比例。值為 100 時表示頁將填滿,所留出的儲存空間量最小。只有當不會對資...
重建索引的填充因子
開啟高階選項才能檢視修改預設填充因子 execsp configure show advanced options 1 reconfigure 檢視預設的填充因子 預設config value 0,也就是100 execsp configure fill factor 檢視某一索引的填充因子 sel...