Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
Index létrehozásakor vagy újraépítésekor az SORT_IN_TEMPDB beállítást ON értékre állítva az SQL Server adatbázismotort a tempdb használatával az index létrehozásához használt köztes rendezési eredmények tárolására irányíthatja. Bár ez a beállítás növeli az index létrehozásához használt ideiglenes lemezterületet, a beállítás csökkentheti az index létrehozásához vagy újraépítéséhez szükséges időt, ha a tempdb a felhasználói adatbázistól eltérő lemezkészleten van. A tempdb-ről további információt az index memóriakiszolgáló konfigurációs beállításának konfigurálása című témakörben talál.
Az indexépítés fázisai
Ahogy az adatbázismotor létrehoz egy indexet, a következő fázisokon megy keresztül:
Az adatbázismotor először megvizsgálja az alaptábla adatlapjait a kulcsértékek lekéréséhez, és minden adatsorhoz létrehoz egy indexlevélsort. Ha a belső rendezési pufferek levélindex-bejegyzésekkel lettek kitöltve, a rendszer köztes rendezési futtatásként rendezi és írja a bejegyzéseket a lemezre. Az adatbázismotor ezután folytatja az adatoldalak vizsgálatát, amíg a rendezési pufferek újra meg nem töltődnek. Ez a több adatoldal beolvasásának mintája, majd a rendezés és a rendezés megírása mindaddig folytatódik, amíg az alaptábla összes sorát fel nem dolgozzák.
Fürtözött indexekben az index levélsorai a tábla adatsorai; ezért a köztes rendezési futtatások tartalmazzák az összes adatsort. Nem fürtözött index esetén a levélsorok tartalmazhatnak nem kulcsoszlopokat, de ezek általában kisebbek, mint a fürtözött index esetében. Ha az indexkulcsok nagyok, vagy az index több nem kulcsos oszlopot is tartalmaz, a nem klaszterezett rendezési futtatás nagy méretet ölthet. A nem kulcsos oszlopok belefoglalásával kapcsolatos további információkért lásd: Indexek létrehozása belefoglalt oszlopokkal.
Az adatbázismotor egyetlen, rendezett adatfolyamba egyesíti az indexlevélsorok rendezett futásait. Az adatbázis-motor rendezési-egyesítési modulja a rendezési futtatások első oldalával kezd, megkeresi az összes oldal közül a legalacsonyabb kulcsot, és ezt a levélsort továbbítja az indexlétrehozási modulnak. A következő legalacsonyabb kulcs lesz feldolgozva, majd a következő, és így tovább. Amikor az utolsó levélindexsort egy rendezési futtatási lapról nyeri ki, a folyamat a következő lapra kerül a rendezési futtatásból. Amikor egy rendezési egység összes lapja feldolgozásra került, az egységet felszabadítják. Mivel minden levélindex sora átkerül az indexlétrehozó elemhez, az a puffer levélindexoldalán szerepel. Minden levéloldal meg van írva, ahogy meg van töltve. A levéloldalak írása során az adatbázismotor az index felső szintjeit is építi. Minden magas szintű indexlap akkor van megírva, amikor meg van töltve.
SORT_IN_TEMPDB beállítás
Ha SORT_IN_TEMPDB KI értékre van állítva, a rendezési futtatások alapértelmezés szerint a célfájlcsoportban lesznek tárolva. Az index létrehozásának első fázisában az alaptáblák váltakozó olvasásai és a rendezési futtatások írása áthelyezi a lemez olvasási/írási fejeit a lemez egyik területéről a másikra. A fejek az adatlap területén vannak az adatoldalak vizsgálatakor. Amikor a rendezési pufferek megtelnek, és az aktuális rendezési futamot lemezre kell írni, átmozdulnak egy szabad területre, majd visszatérnek az adatoldal területére, amikor a táblázatlap vizsgálata folytatódik. Az olvasási/írási fej mozgása nagyobb a második fázisban. Ekkor a rendezési folyamat általában felváltja az egyes rendezési területek olvasásait. A rendezési futtatások és az új indexlapok is a célfájlcsoportban vannak létrehozva. Ez azt jelenti, hogy miközben az adatbázismotor a rendezési futások között osztja el az olvasásokat, rendszeresen át kell ugrania az indexek kiterjedésekhez, hogy új indexoldalakat írjon, ahogy azok megtelnek.
Ha a SORT_IN_TEMPDB beállítás ON értékre van állítva, és a tempdb a célfájlcsoporttól eltérő lemezen van, az első fázisban az adatoldalak olvasása az írásoktól a tempdb rendezési munkaterületig eltérő lemezen történik. Ez azt jelenti, hogy az adatkulcsok lemezolvasása általában a lemezen szerialikusabban folytatódik, és a tempdb lemezre történő írások is általában sorosak, ahogy a végső index létrehozásához használt írások is. Még ha más felhasználók is használják az adatbázist, és külön lemezcímekhez férnek hozzá, az olvasások és írások általános mintázata hatékonyabb, ha SORT_IN_TEMPDB van megadva, mint ha nem.
A SORT_IN_TEMPDB beállítás javíthatja az index kiterjesztések folytonosságát, különösen akkor, ha a CREATE INDEX művelet nem kerül párhuzamos feldolgozásra. A rendezési munkaterület kiterjedése némileg véletlenszerűen szabadul fel az adatbázisban található helyük alapján. Ha a rendezési munkaterületek a célfájlcsoportban találhatók, mivel a rendezési munka kiterjedése felszabadítva van, az indexstruktúra felépítése során a mértékekre vonatkozó kérések lekérhetik őket. Ez bizonyos mértékig véletlenszerűen eloszthatja az indexkiterjesztések helyeit. Ha a rendezési mértékek külön vannak tárolva a tempdb-ben, a felszabadításuk sorrendjének nincs hatása az index terjedelmének helyére. Ha a köztes rendezési futtatások a célfájlcsoport helyett a tempdb-ben vannak tárolva, több hely áll rendelkezésre a célfájlcsoportban. Ez növeli annak az esélyét, hogy az indexek kiterjedése egybefüggő lesz.
A SORT_IN_TEMPDB beállítás csak az aktuális utasítást érinti. Nincsenek metaadatrekordok, amelyek szerint az index a tempdb-ben lett vagy nem lett rendezve. Ha például nemclustered indexet hoz létre a SORT_IN_TEMPDB beállítással, és később a beállítás megadása nélkül hoz létre fürtözött indexet, az adatbázismotor nem használja ezt a beállítást a nemclustered index újbóli létrehozásakor.
Note
Ha nincs szükség rendezési műveletre, vagy ha a rendezés végrehajtható a memóriában, a rendszer figyelmen kívül hagyja a SORT_IN_TEMPDB beállítást.
Lemezterületre vonatkozó követelmények
Ha a SORT_IN_TEMPDB beállítást BE értékre állítja, elegendő szabad lemezterületnek kell lennie a tempdb-ben a köztes rendezési futtatások tárolásához, és elegendő szabad lemezterületnek kell lennie a célfájlcsoportban az új index tárolásához. A CREATE INDEX utasítás meghiúsul, ha nincs elegendő szabad hely, és valamilyen oknál fogva az adatbázisok nem tudnak automatikusan több helyet beolvasni, például nincs szabad hely a lemezen vagy az autogrow ki van kapcsolva.
Ha SORT_IN_TEMPDB KI értékre van állítva, a célfájlcsoportban rendelkezésre álló szabad lemezterületnek nagyjából a végső index méretének kell lennie. Az első fázisban a rendezési futtatások létre vannak építve, és körülbelül annyi helyet igényelnek, mint a végső index. A második fázisban minden rendezési futtatási mérték felszabadul a feldolgozás után. Ez azt jelenti, hogy a rendezési kiterjesztések körülbelül ugyanolyan sebességgel szabadulnak fel, mint ahogyan a végső index oldalak tárolására szerzett kiterjesztések; ezért az összes helyigény nem jelentősen haladja meg a végső index méretét. Ennek egyik mellékhatása, hogy ha a szabad terület nagysága nagyon közel van a végső index méretéhez, az adatbázismotor általában nagyon gyorsan újra felhasználja a rendezési futtatási mértékeket a felszabadításuk után. Mivel a rendezési futtatási mértékek némileg véletlenszerű módon szabadulnak fel, ez csökkenti az index terjedelmének folytonosságát ebben a forgatókönyvben. Ha a SORT_IN_TEMPDB KI van kapcsolva, az indexkiterjedések folytonossága javul, ha a célfájlcsoportban elegendő szabad hely van, amelyből az indexkiterjedések egy összefüggő készletből foglalhatók le, a frissen felszabadított rendezési futamkiterjedések helyett.
Szabad helynek rendelkezésre kell állnia, amikor nem klaszterezett indexet hoz létre.
Ha SORT_IN_TEMPDB BE értékre van állítva, elegendő szabad helynek kell lennie a tempdb-ben a rendezési futtatások tárolásához, és elegendő szabad helynek kell lennie a célfájlcsoportban a végső indexstruktúra tárolásához. A rendezési futtatások az index levélsorait tartalmazzák.
Ha SORT_IN_TEMPDB KI értékre van állítva, a célfájlcsoport szabad helyének elég nagynak kell lennie a végső indexszerkezet tárolásához. Az index folytonossága tovább növelhető, ha több szabad hely áll rendelkezésre.
Amikor olyan táblán hoz létre fürtözött indexet, amely nem tartalmaz nem fürtözött indexeket, biztosítani kell, hogy rendelkezésre álljon elegendő szabad hely.
Ha a SORT_IN_TEMPDB ON-ra van állítva, elegendő szabad helynek kell lennie a tempdb-ben a rendezési futtatások tárolásához. Ezek közé tartoznak a tábla adatsorai. A végső indexstruktúra tárolásához elegendő szabad helynek kell lennie a célfájlcsoportban. Ez magában foglalja a tábla adatsorait és a B-fa indexet. Előfordulhat, hogy módosítania kell a becslést olyan tényezők esetében, mint a nagy kulcsméret vagy az alacsony értékkel rendelkező kitöltési tényező.
Ha SORT_IN_TEMPDB KI értékre van állítva, a célfájlcsoport szabad helyének elég nagynak kell lennie a végső tábla tárolásához. Ebbe beletartozik az indexstruktúra is. Ha több szabad hely áll rendelkezésre, a táblázat és az index kiterjedésének folytonossága javítható.
Ha olyan táblán hoz létre fürtözött indexet, amely nem fürtözött indexeket tartalmaz, elegendő szabad helynek kell rendelkezésre állnia.
Ha SORT_IN_TEMPDB BE értékre van állítva, elegendő szabad helynek kell lennie a tempdb-ben a legnagyobb index rendezési futásainak tárolásához, általában a fürtözött indexhez, és elegendő szabad helynek kell lennie a célfájlcsoportban az összes index végső struktúrájának tárolásához. Ide tartozik a tábla adatsorait tartalmazó fürtözött index.
Ha SORT_IN_TEMPDB KI értékre van állítva, a célfájlcsoport szabad helyének elég nagynak kell lennie a végső tábla tárolásához. Ez magában foglalja az összes index struktúráját. Ha több szabad hely áll rendelkezésre, a táblázat és az index kiterjedésének folytonossága javítható.
Kapcsolódó tevékenységek
INDEX KÉSZÍTÉSE (Transact-SQL)
Indexek átrendezése és újraépítése
Kapcsolódó tartalom
Az index létrehozási memória szerver konfigurációs beállításának konfigurálása