Index kitöltési tényezőinek megadása

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Ez a cikk azt ismerteti, hogy mi a kitöltési tényező, és hogyan adható meg egy kitöltési tényező értéke egy indexhez az SQL Server Management Studio vagy a Transact-SQL használatával.

A kitöltési tényező beállítás az indexadatok tárolásának és teljesítményének finomhangolására szolgál. Az index létrehozásakor vagy újraépítésekor a kitöltési tényező értéke határozza meg, hogy az egyes levélszintű oldalakon hány százalékban legyenek kitöltve adatok, a fennmaradó részeket pedig szabad helyként kell tárolni az egyes lapokon a jövőbeli növekedéshez. Ha például 80-at ad meg, az azt jelenti, hogy az egyes levélszintű lapok 20 százaléka üresen marad, lehetőséget biztosítva az adatnövekedésnek. Az üres terület az index minden oldalán van fenntartva, nem pedig az index végén.

A kitöltési tényező értéke 1 és 100 közötti százalékos érték, a kiszolgálószintű alapértelmezett érték pedig 0, ami azt jelenti, hogy a levélszintű lapok kapacitással vannak kitöltve.

Note

A 0 és a 100 kitöltési tényező értéke minden tekintetben megegyezik.

ebben a témakörben

Mielőtt hozzákezdene

Teljesítménnyel kapcsolatos szempontok

Oldalfelosztások

Amikor új sort ad hozzá egy teljes indexlaphoz, az adatbázismotor a sorok körülbelül felét áthelyezi egy új lapra, hogy helyet biztosítson az új sornak. Ezt az átszervezést lapfelosztásnak nevezzük. Az oldaleloszlások helyet ad az új soroknak, de ha az index közepén történik, időt vehet igénybe, és erőforrás-igényes művelet. Emellett töredezettséget is okozhat, amely csökkenti a lap előolvasás hatékonyságát a nagy indexvizsgálatok során.

A jól kiválasztott kitöltési tényező értéke csökkentheti az oldalak felosztását azáltal, hogy elegendő helyet biztosít az indexbővítéshez, amikor az adatok az index közepén kerülnek hozzáadásra. Ha az oldalszeletelések befolyásolják a teljesítményt, az index új vagy meglévő kitöltési tényező értékének használatával újraépíthető a 70–95 százalékos tartományban. Ne csökkentse azonban feleslegesen a kitöltési tényezőt, vagy ne állítsa túl alacsonyra. További információ: Indexkarbantartás optimalizálása a lekérdezési teljesítmény javítása és az erőforrás-felhasználás csökkentése.

A legtöbb számítási feladat optimálisan teljesít az alapértelmezett kitöltési tényezővel (100 százalék). Csökkentett kitöltési tényező esetén az index több tárhelyet, memóriát és lemez I/O-t igényel, ami csökkentheti a teljesítményt. Még az írásigényes számítási feladatok esetében is az adatbázis általában öt-tíz tényezővel túllépi az adatbázis-írások számának értékét. Ezért az alapértelmezetten kívüli kitöltési tényező megadása a kitöltési tényező beállításával fordítottan arányos összeggel növelheti az erőforrás-kihasználtságot.

Egy 50-es kitöltési tényező értéke például megduplázza a lemez I/O-ját és memóriáját, amely ugyanannak az adatnak az olvasásához és gyorsítótárazásához szükséges.

A tábla végéhez hozzáadott adatok

Az alacsonyabb kitöltési tényező csökkentheti az oldalak felosztását, és javíthatja a teljesítményt, ha az új adatok egyenletesen oszlanak el az indexben. Ha azonban új adatokat ad hozzá az index végéhez, előfordulhat, hogy az indexlapok üres területe nem lesz kitöltve. Ha például az indexkulcs oszlopa egy IDENTITY oszlop, az új sorok kulcsa mindig növekszik, és az indexsorok logikailag hozzá lesznek adva az index végéhez.

Biztonság

Permissions

A(z) táblára vagy nézetre vonatkozó ALTER engedély szükséges. A felhasználónak tagja kell lennie a sysadmin rögzített kiszolgálói szerepkörnek vagy a db_ddladmindb_owner rögzített adatbázis-szerepköröknek.

Az SQL Server Management Studio használata

Kitöltési tényező megadása a Table Designer használatával

  1. Az Object Explorerben a pluszjelre kattintva bontsa ki azt az adatbázist, amely azt a táblát tartalmazza, amelyen meg szeretné adni az index kitöltési tényezőjét.

  2. A pluszjelre kattintva bontsa ki a Táblák mappát.

  3. Kattintson a jobb gombbal arra a táblára, amelyen meg szeretné adni az index kitöltési tényezőjét, és válassza Tervezéslehetőséget.

  4. A Táblatervező menüben kattintson Indexek/Kulcsokelemre.

  5. Jelölje ki a megadni kívánt kitöltési tényezőt tartalmazó indexet.

  6. Bontsa ki a Kitöltési specifikáció-et, válassza ki a Kitöltési tényező sort, és adja meg a kívánt kitöltési tényezőt ebben a sorban.

  7. Kattintson a Bezárás gombra.

  8. A Fájl menüben válassza a Mentéstable_namelehetőséget.

Kitöltési tényező megadása indexben az Object Explorer használatával

  1. Az Object Explorerben a pluszjelre kattintva bontsa ki azt az adatbázist, amely azt a táblát tartalmazza, amelyen meg szeretné adni az index kitöltési tényezőjét.

  2. A pluszjelre kattintva bontsa ki a Táblák mappát.

  3. Kattintson a pluszjelre annak a táblának a kibontásához, amelyre az index kitöltési tényezőjét meg szeretné adni.

  4. A pluszjelre kattintva nyissa meg a Indexek mappát.

  5. Kattintson a jobb gombbal a megadni kívánt kitöltési tényezővel rendelkező indexre, és válassza a Tulajdonságoklehetőséget.

  6. A Válasszon egy lapot, válassza a Beállításoklehetőséget.

  7. A Kitöltési tényező sorban adja meg a kívánt kitöltési tényezőt.

  8. Kattintson az OK gombra.

Transact-SQL használata

Kitöltési tényező megadása meglévő indexben

  1. Az Object Explorer-ben csatlakozzon az adatbázismotor egy példányához.

  2. A Standard sávon kattintson Új lekérdezéselemre.

  3. Másolja és illessze be a következő példát a lekérdezési ablakba, és kattintson a Végrehajtásgombra. A példa újraépít egy meglévő indexet, és alkalmazza a megadott kitöltési tényezőt az újraépítési művelet során.

    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  
    

Egy másik módszer a kitöltési tényező megadására egy indexben

  1. Az Object Explorer-ben csatlakozzon az adatbázismotor egy példányához.

  2. A Standard sávon kattintson Új lekérdezéselemre.

  3. Másolja és illessze be a következő példát a lekérdezési ablakba, és kattintson a Végrehajtásgombra.

    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  
    

További információ: ALTER INDEX (Transact-SQL).