Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Database
Spravovaná instance
Azure SQLDatabáze SQL v Microsoft Fabric
Tento článek popisuje, co je výplňový faktor a jak zadat hodnotu faktoru výplně pro index pomocí aplikace SQL Server Management Studio nebo Transact-SQL.
Možnost fill factor je k dispozici k jemnému vyladění úložiště dat indexů a výkonu. Při vytvoření nebo opětovném vytvoření indexu určuje hodnota faktoru výplně procento mezery na každé stránce na úrovni listu, která se má vyplnit daty, a zbytek na každé stránce si zarezervuje jako volné místo pro budoucí růst. Například zadání hodnoty faktoru výplně 80 znamená, že 20 procent každé stránky na úrovni listu zůstane prázdné a poskytne prostor pro růst dat. Prázdné místo je vyhrazeno na každé stránce indexu, nikoli na konci indexu.
Hodnota výplňového faktoru je procento od 1 do 100 a výchozí hodnota pro celý server je 0, což znamená, že stránky na úrovni listu jsou vyplněné do kapacity.
Note
Hodnoty výplňového faktoru 0 a 100 jsou ve všech ohledech stejné.
V tomto tématu
Než začnete:
Stanovení vyplňovacího faktoru v indexu pomocí:
Než začnete
Důležité informace o výkonu
Dělení stránek
Když se nový řádek přidá na celou indexovou stránku, databázový stroj přesune přibližně polovinu řádků na novou stránku, aby se uvolnil prostor pro nový řádek. Tato změna uspořádání se označuje jako rozdělení stránky. Rozdělení stránky dává prostor pro nové řádky, ale pokud k němu dojde uprostřed indexu, může to nějakou dobu trvat a je to operace náročná na prostředky. Může také způsobit fragmentaci, která snižuje efektivitu čtení stránky dopředu během rozsáhlých kontrol indexu.
Dobře zvolená hodnota faktoru výplně může snížit rozdělení stránek tím, že poskytuje dostatek místa pro rozšíření indexu při přidání dat doprostřed indexu. Pokud rozdělení stránek ovlivňuje výkon, lze index znovu vytvořit pomocí nové nebo existující hodnoty faktoru výplně v rozsahu 70–95 %. Nezmenšujte ale faktor výplně zbytečně nebo ho nenastavujte příliš nízko. Další informace najdete v tématu Optimalizace údržby indexů za účelem zlepšení výkonu dotazů a snížení spotřeby prostředků.
Většina úloh funguje optimálně s výchozím faktorem výplně (100 procent). Při sníženém faktoru výplně index vyžaduje více místa na úložišti, paměti a vstupně-výstupních operací disku, což může snížit výkon. I v případě úloh náročných na zápis obvykle počet čtení z databáze převyšuje počet zápisů do databáze v poměru pět ku deseti. Proto určení jiného než výchozího faktoru může zvýšit využití prostředků množstvím nepřímo úměrným nastavení faktoru výplně.
Například hodnota výplňového faktoru 50 zdvojnásobí vstupně-výstupní operace disku a paměť potřebnou ke čtení a ukládání do mezipaměti stejného množství dat.
Data přidaná na konec tabulky
Nižší faktor výplně může snížit rozdělení stránek a zlepšit výkon, pokud se nová data rovnoměrně distribuují v celém indexu. Pokud se ale nová data přidají na konec indexu, nemusí být prázdné místo na stránkách indexu vyplněné. Pokud je například sloupec indexového klíče IDENTITY, klíč pro nové řádky se stále zvyšuje a řádky indexu jsou logicky přidány na konec indexu.
Zabezpečení
Permissions
Vyžaduje oprávnění ALTER v tabulce nebo zobrazení. Uživatel musí být členem sysadmin pevné role serveru nebo pevných db_ddladmindb_owner databázových rolí.
Použití aplikace SQL Server Management Studio
Určení faktoru výplně pomocí Návrháře tabulky
V Průzkumníku objektů kliknutím na znaménko plus rozbalte databázi obsahující tabulku, na které chcete zadat faktor vyplnění indexu.
Kliknutím na znaménko plus rozbalte složku Tabulky.
Pravým tlačítkem myši klikněte na tabulku, na které chcete zadat faktor výplně indexu, a vyberte Návrh.
V nabídce Návrhář tabulky klikněte na Indexy/Klíče.
Vyberte index s faktorem výplně, který chcete zadat.
Rozbalte specifikaci výplně , vyberte řádek faktoru výplně a zadejte požadovaný faktor výplně v řádku.
Klepněte na tlačítko Zavřít.
V nabídce Soubor vyberte možnost Uložittable_name.
Určení faktoru vyplnění v indexu pomocí Průzkumníka objektů
V Průzkumníku objektů kliknutím na znaménko plus rozbalte databázi obsahující tabulku, na které chcete zadat faktor vyplnění indexu.
Kliknutím na znaménko plus rozbalte složku Tabulky.
Kliknutím na znaménko plus rozbalte tabulku, na které chcete zadat faktor výplně indexu.
Kliknutím na znaménko plus rozbalte složku Indexy.
Pravým tlačítkem myši klikněte na index s faktorem výplně, který chcete zadat, a vyberte Vlastnosti.
V části Vyberte stránku, vyberte Možnosti.
V řádku Faktor výplně zadejte faktor výplně, který chcete.
Klikněte na OK.
Použití Transact-SQL
Určení faktoru vyplnění v existujícím indexu
V Průzkumníku objektůse připojte k instanci databázového serveru.
Na panelu Standard klikněte na Nový dotaz.
Zkopírujte a vložte následující příklad do okna dotazu a klikněte na Spustit. Příklad znovu sestaví existující index a použije zadaný faktor výplně během operace opětovného sestavení.
USE AdventureWorks2022; GO -- Rebuilds the IX_Employee_OrganizationLevel_OrganizationNode index -- with a fill factor of 80 on the HumanResources.Employee table. ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee REBUILD WITH (FILLFACTOR = 80); GO
Jiný způsob, jak zadat vyplňovací faktor v rámci indexu
V Průzkumníku objektůse připojte k instanci databázového serveru.
Na panelu Standard klikněte na Nový dotaz.
Zkopírujte a vložte následující příklad do okna dotazu a klikněte na Spustit.
USE AdventureWorks2022; GO -- Drops and re-creates the IX_Employee_OrganizationLevel_OrganizationNode index -- on the HumanResources.Employee table with a fill factor of 80. CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee (OrganizationLevel, OrganizationNode) WITH (DROP_EXISTING = ON, FILLFACTOR = 80); GO
Další informace najdete v tématu ALTER INDEX (Transact-SQL).