1

我使用SQL Server並且想要爲每個索引分配適當的填充因子值。我知道下面的參數對於每個索引:發生爲每個索引分配適當的填充因子選項

  1. 每個表的行數
  2. 掃描的量各指標的尋道時間發生了查找每個索引
  3. 本期發生的各項指標
  4. 金額。
  5. 每個索引的更新數量。

我知道掃描,查找和查找將填充因子值提高到100,並將填充因子更新爲0.但是我根據每個表的上述參數查找計算適當填充因子選項的公式。

編輯

我使用下面的腳本來獲得以上參數:

select SCHEMA_NAME(B.schema_id)+'.'+B.name+' \ '+C.name AS IndexName, 
     A.user_scans, 
     A.user_seeks, 
     A.user_lookups, 
     A.user_updates, 
     D.rowcnt, 
     C.fill_factor 
from sys.dm_db_index_usage_stats A 
INNER JOIN sys.objects B ON A.object_id = B.object_id 
INNER JOIN sys.indexes C ON C.object_id = B.object_id AND C.index_id = A.index_id 
INNER JOIN sys.sysindexes D ON D.id = B.object_id AND D.indid = A.index_id 

編輯2 我用下面參考用於填充因子選擇最佳值:

Best value for fill factor 1

Best value for fill factor 2

+1

是什麼讓你覺得你需要改變默認填充因子開始?你觀察到什麼問題,你做了什麼測量? –

+0

填充因子值對性能有直接影響。我想分配適當的填充因子值以獲得更好的性能。 –

+1

你沒有回答這個問題。你測量了什麼?你怎麼知道你有錯誤的填充因子? **如果我告訴你把整個因子42,你將如何衡量影響?**。你正在追逐紅鯡魚。 –

回答

0

我會使用由布倫特奧扎爾無限的肯德拉小說所描述的技術。 Here是文章。她介紹了尋找和解決填充因子問題的方法。

同樣作爲Remus在他的評論中提到的,你應該在使用填充因子時使用謹慎。我意識到互聯網上的很多文章聽起來好像高填充因子會導致無數頁面分裂並破壞您的性能,但降低填充因子可能會導致比解決問題更多的問題。

Kendra建議使用默認的填充因子並跟蹤一段時間內的碎片,並且只有當索引由於頁面拆分而出現碎片問題時,才應緩慢減小填充因子。我一直在使用這種技術,並且我注意到我的緩存使用得更好,因爲我的索引無用地膨脹了多少。

「我經常發現人們對數據庫中的所有索引都設置了80或更低的填充因子設置,這會浪費磁盤和內存中的許多空間,浪費的空間會導致額外的存儲行爲,整件事拖垮了你的查詢的表現。「

看看這個報價在Books Online「例如,50的填充因子值可以導致數據庫的讀取性能由兩次減少。 「

所以用一種很好的方式說出來。我不確定你應該開始不必要地弄亂填充因子。觀察者,學習,然後行動。