1
我在填充因子爲100%的數據庫中有大約250 GB的索引。爲了提高性能,我想將填充因子降低到95%。SQL Server:在填充因子小於100%後預計有多少指數增長
因此,在將填充因子應用於我的索引之前,我想知道在應用95%填充因子後索引大小將增長多少。
我期望的是,索引尺寸總數的5%會增長是正確的嗎?
我在填充因子爲100%的數據庫中有大約250 GB的索引。爲了提高性能,我想將填充因子降低到95%。SQL Server:在填充因子小於100%後預計有多少指數增長
因此,在將填充因子應用於我的索引之前,我想知道在應用95%填充因子後索引大小將增長多少。
我期望的是,索引尺寸總數的5%會增長是正確的嗎?
我在想這個昨晚上和邏輯上它將使意義,所以我決定來測試它:
- 創建測試表
CREATE TABLE TableIndexTest (id INT, id2 INT, var VARCHAR(100))
--Populate一些有意義的數據
DECLARE @num INT = 1000000
DECLARE @var VARCHAR(100) = 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ'
DECLARE @num2 INT = 1000000
DECLARE @iter INT = 1000000
DECLARE @num_curr INT = 1
WHILE (@num_curr <= @num)
BEGIN
INSERT TableIndexTest (id, id2, var) SELECT @num_curr, @num_curr, @var
SELECT @num_curr = @num_curr + 1
END
- 用fillfactor創建一些索引
CREATE NONCLUSTERED INDEX ix_test_fillfactor100 ON TableIndexTest ([id], [id2], [var])
CREATE NONCLUSTERED INDEX ix_test_fillfactor90 ON TableIndexTest ([id], [id2], [var]) WITH (FILLFACTOR = 90)
CREATE NONCLUSTERED INDEX ix_test_fillfactor80 ON TableIndexTest ([id], [id2], [var]) WITH (FILLFACTOR = 80)
CREATE NONCLUSTERED INDEX ix_test_fillfactor70 ON TableIndexTest ([id], [id2], [var]) WITH (FILLFACTOR = 70)
CREATE NONCLUSTERED INDEX ix_test_fillfactor60 ON TableIndexTest ([id], [id2], [var]) WITH (FILLFACTOR = 60)
CREATE NONCLUSTERED INDEX ix_test_fillfactor50 ON TableIndexTest ([id], [id2], [var]) WITH (FILLFACTOR = 50)
- 檢查索引大小
SELECT
i.name AS IndexName,
SUM(s.used_page_count) * 8 AS IndexSizeKB
FROM sys.dm_db_partition_stats AS s
JOIN sys.indexes AS i ON s.[object_id] = i.[object_id] AND s.index_id = i.index_id
WHERE s.[object_id] = OBJECT_ID('TableIndexTest')
GROUP BY i.name
ORDER BY SUM(s.used_page_count) * 8;
預期結果將是,該指數將填充因子設置爲50將不填充因子集索引的一半大小(Server的默認爲0,因此將基本上100) 。
結果:
IndexName IndexSizeKB
ix_test_fillfactor100 52008
ix_test_fillfactor90 57176
ix_test_fillfactor80 64480
ix_test_fillfactor70 73952
ix_test_fillfactor60 85752
ix_test_fillfactor50 103328
所以填充因子50 * 2 = 104016時預計將103328但考慮到該指數的最後一頁可能只有它的1行,我認爲它非常接近這樣你可以安全地使用這種計算
本質上是的,我不會建議盲目做所有索引思想,挑選不斷更新和重新排列的具體的 – dbajtr
謝謝,這將有助於, 是的,我不會去運行它盲目。我只想清理我的音樂會,以便我可以瞭解我需要多少空間。 所以,只是想確認,可以說如果我將所有索引的填充因子應用爲90%,那麼我的全部索引大小將增加10%? –