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
Ez a cikk meghatározza az online indexelési művelet során létező struktúrákat, és megjeleníti az ezekhez a struktúrákhoz kapcsolódó tevékenységeket.
Online indexstruktúrák
Ha párhuzamos felhasználói tevékenységet szeretne engedélyezni egy indexadat-definíciós nyelv (DDL) művelet során, az alábbi struktúrákat használja az online indexművelet során: a forrás- és meglévő indexek, a cél index, valamint a halom újraépítéséhez vagy egy fürtözött index online törléséhez, egy ideiglenes leképezési index.
Forrás- és létező indexek
A forrás az eredeti tábla vagy fürtözött index adatai. A már létező indexek a forrásstruktúrához társított nem csoportosított indexek. Ha például az online indexművelet egy négy társított nemclustered indexet tartalmazó fürtözött indexet épít újra, a forrás a meglévő fürtözött index, a már meglévő indexek pedig a nemclustered indexek.
A meglévő indexek elérhetők egyidejűleg a felhasználók számára a kiválasztási, beszúrási, frissítési és törlési műveletekhez. Ide tartoznak a tömeges beszúrások (az online indexelési művelet során támogatott, de nem ajánlott) és az eseményindítók és hivatkozási integritási korlátozások implicit frissítései. A lekérdezésekhez minden már létezik index elérhető. Ez azt jelenti, hogy a lekérdezésoptimalizáló kiválasztja őket, és szükség esetén indexmutatókban is meg van adva.
Target
A cél vagy a célok az az új index (vagy halom), vagy az új indexek készlete, amelyet éppen létrehoznak vagy újraépítenek. A felhasználó beszúrási, frissítési és törlési műveleteit az adatbázismotor alkalmazza a célra az indexművelet során. Ha például az online indexelési művelet fürtözött indexet épít újra, a cél az újraépített fürtözött index; az adatbázismotor nem építi újra a nemclustered indexeket a fürtözött indexek újraépítésekor.
A célindex csak az indexművelet véglegesítése után használható. Az index belsőleg írásvédettként van megjelölve.
Ideiglenes leképezési index
Az online indexműveletek, amelyek fürtölt indexeket hoznak létre, vetnek el vagy építenek újra, ideiglenes leképezési indexet is igényelnek. Ezt az ideiglenes indexet egyidejű tranzakciók használják annak meghatározására, hogy mely rekordok legyenek törölve a forrástábla sorainak frissítésekor vagy törlésekor létrehozott új indexekben. Ez a nem fürtözött index ugyanabban a lépésben jön létre, mint az új fürtözött index (vagy halom), és nem igényel külön rendezési műveletet. Az egyidejű tranzakciók megtartják az ideiglenes leképezési indexet az összes beszúrási, frissítési és törlési műveletben.
Online indexelési tevékenységek
Egy online indexelési művelet, például fürtözött index létrehozása nem indexelt táblán (halom) során a forrás és a cél három fázison megy keresztül: előkészítés, létrehozás és végleges.
A progress_report_online_index_operation kiterjesztett esemény használatával monitorozhat egy online indexelési művelet előrehaladását.
Az alábbi ábra a kezdeti fürtözött index online létrehozásának folyamatát mutatja be. A forrásobjektum (a halom) nem rendelkezik más indexel. A forrás- és célstruktúra-tevékenységek minden fázisban megjelennek; az egyidejű felhasználó SELECT, INSERT, UPDATEés DELETE a műveletek is megjelennek. Az előkészítési, összeállítási és végső fázisok az egyes fázisokban használt zárolási módokkal együtt jelennek meg.
Forrásstruktúra-tevékenységek
Az alábbi táblázat az indexművelet egyes fázisaiban a forrásstruktúrát és a megfelelő zárolási stratégiát magában foglaló tevékenységeket sorolja fel.
| Phase | Forrástevékenység | Forrászárak |
|---|---|---|
|
Preparation Rövid fázis |
A rendszer metaadatainak előkészítése az új üres indexstruktúra létrehozásához. A tábla pillanatképe definiálva van. Vagyis a sorverziók használatával tranzakciószintű olvasási konzisztenciát biztosít. Az egyidejű felhasználói írási műveletek a forráson rövid ideig le lesznek tiltva. Egyidejű DDL-műveletek nem engedélyezettek, kivéve, ha több nem klaszterezett indexet hoz létre. |
Megosztott (S) az1. táblázatbanSzándék megosztva ( IS)Sémamódosítási ( Sch-M) objektum zárolása az INDEX_OPERATION2 erőforrás-altípussal |
|
Build Fő fázis |
Az adatok beolvasása, rendezése, egyesítése és beszúrása a célba tömeges terhelési műveletek használatával történik. A felhasználói INSERT, UPDATE, DELETE és MERGE műveletek egyidejűleg kerülnek alkalmazásra mind a már meglévő, mind az újonnan épülő indexekre. |
Szándék megosztva (IS)Sch-Mobjektumzárolás az INDEX_OPERATION2 erőforrás altípussal |
|
Final Rövid fázis |
Az összes nem véglegesített írási tranzakciónak le kell fejeződnie a fázis megkezdése előtt. A beszerzett zárolástól függően az összes új felhasználó olvasási vagy írási tranzakciója rövid ideig le lesz tiltva, amíg a fázis befejeződik. A rendszer metaadatai frissülnek, hogy felcserélje a forrást a céllal. Szükség esetén a forrás törlődik, például egy klaszterezett index újraépítése vagy törlése után. |
Sch-Mobjektumzárolás az INDEX_OPERATION2 erőforrás altípussalMegosztott ( S) a táblában, ha nem klaszteres indexet hoz létre.1Sch-M ha bármely forrásstruktúra (index vagy tábla) törlésre kerül. 1 |
1 Az indexművelet megvárja, amíg a nem véglegesített írási tranzakciók befejeződnek, mielőtt megszerezné a S zárolást vagy a Sch-M zárolást a táblán. Ha egy hosszú ideig futó lekérdezés zajlik, az online indexelési művelet megvárja, amíg a lekérdezés befejeződik. Ha nem használ alacsony prioritású zárolásokat, ez blokkoló láncot képezhet.
2 Az Sch-M erőforrás-altípussal INDEX_OPERATION rendelkező objektumzárolás megakadályozza az egyidejű adatdefiníciós nyelvi (DDL-) műveletek végrehajtását a forrás- és az előfuttatási struktúrákon, miközben az indexművelet folyamatban van. Ez a zárolás például megakadályozza két index egyidejű újraépítését ugyanazon a táblán. Bár ez egy Sch-M zárolás, nem akadályozza meg az adatmanipulációs utasításokat.
Az előző táblázat egyetlen megosztott (S) zárolást mutat be, amelyet egy olyan online indexelési művelet összeállítási fázisában szereztek be, amely egyetlen indexet tartalmaz. Ha a fürtözött és a nem fürtözött indexek egyetlen online indexműveletben jönnek létre vagy épülnek újra (például egy vagy több nem fürtözött indexet tartalmazó táblán a kezdeti fürtözött index létrehozásakor), az építési fázis során két rövid távú S zárolást alkalmazunk, majd hosszú távú szándékos megosztott (IS) zárolásokat. Először egy S zárolást szerez be a fürtözött index létrehozásához. A fürtözött index létrehozásakor a rendszer egy második rövid távú S zárolást szerez be a nem-fürtözött indexek létrehozásához. A nem klaszterelt indexek létrehozása után a S zárolás le lesz minősítve egy IS zárolássá az online indexművelet utolsó fázisáig.
További információért arról, hogyan használják és kezelheti a zárolásokat, lásd: WAIT_AT_LOW_PRIORITY alkalmazása az online indexműveleteknél.
Célstruktúra-tevékenységek
Az alábbi táblázat felsorolja azokat a tevékenységeket, amelyek az indexművelet egyes fázisai során a célstruktúrát és a megfelelő zárolási stratégiát foglalják magukban.
| Phase | Céltevékenység | Célzárak |
|---|---|---|
| Preparation | Új index jön létre, és csak írásra van állítva. | Szándék megosztva (IS) |
| Build | Az adatok forrásból lesznek beszúrva. A forrásra alkalmazott felhasználói módosításokat (beszúrásokat, frissítéseket, törléseket) a célra is alkalmazza a rendszer. Ez a tevékenység transzparens a felhasználó számára. |
Szándék megosztva (IS) |
| Final | Az index metaadatai frissülnek. Az index írási/olvasási állapotra van állítva. |
Megosztott (S) vagy sémamódosítás (Sch-M) |
A célhoz a felhasználói lekérdezések nem férnek hozzá, amíg az indexművelet be nem fejeződik.
Az előkészítés vagy az utolsó fázis befejezése után a tervgyorsítótárban tárolt lekérdezési tervek érvénytelenné válhatnak.
Az online indexelési műveletben részt vevő táblában deklarált kurzor élettartamát az online indexelési fázisok korlátozzák. A frissítési kurzorok minden fázisban érvénytelenítve lesznek. Az írásvédett kurzorok csak az utolsó fázis után lesznek érvénytelenítve.