Megosztás a következőn keresztül:


Szelektív XML-indexek (SXI)

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

A szelektív XML-indexek az XML-indexek egy másik típusa, amely a szokásos XML-indexek mellett az Ön számára is elérhető. A szelektív XML-index funkció céljai a következők:

  • Az SQL Serverben tárolt XML-adatokon keresztüli lekérdezések teljesítményének javítása.

  • A nagy XML-adatterhelések gyorsabb indexelésének támogatása.

  • A méretezhetőség javítása az XML-indexek tárolási költségeinek csökkentésével.

A szokásos XML-indexek fő korlátozása, hogy a teljes XML-dokumentumot indexelik. Ez számos jelentős hátrányhoz vezet, például a lekérdezési teljesítmény csökkenéséhez és a megnövekedett indexkarbantartási költségekhez, amelyek többnyire az index tárolási költségeihez kapcsolódnak.

A szelektív XML-index funkcióval csak bizonyos elérési utakat előléptethet az XML-dokumentumokból az indexbe. Az index létrehozásakor a rendszer kiértékeli ezeket az útvonalakat, és azokat a csomópontokat, amelyekre mutatnak, szétbontva tárolja az SQL Server relációs táblájában. Ez a funkció a Microsoft Research által az SQL Server termékcsapatával együttműködve kifejlesztett hatékony leképezési algoritmust használ. Ez az algoritmus egyetlen relációs táblára képezi le az XML-csomópontokat, és kivételes teljesítményt ér el, miközben csak szerény tárterületet igényel.

A szelektív XML-index funkció támogatja a szelektív XML-index által indexelt csomópontok másodlagos szelektív XML-indexeit is. Ezek a másodlagos szelektív indexek hatékonyak, és tovább javítják a lekérdezések teljesítményét.

A szelektív XML-indexek előnyei

A szelektív XML-indexek a következő előnyöket biztosítják:

  1. A lekérdezési teljesítmény jelentősen javult az XML-adattípuson a tipikus lekérdezésbetöltések esetében.

  2. A szokásos XML-indexekhez képest alacsonyabb tárolási követelmények.

  3. Alacsonyabb indexkarbantartási költségek a szokásos XML-indexekhez képest.

  4. Nem kell frissíteni az alkalmazásokat a szelektív XML-indexek előnyeinek kihasználásához.

Szelektív XML-indexek és elsődleges XML-indexek

Fontos

A jobb teljesítmény és a hatékonyabb tárolás érdekében a legtöbb esetben a szokásos XML-index helyett hozzon létre szelektív XML-indexet.

A szelektív XML-indexek azonban nem ajánlottak, ha az alábbi feltételek valamelyike teljesül:

  • Számos csomópont elérési útját leképezi.

  • A dokumentumstruktúra ismeretlen helyen lévő ismeretlen elemeire vagy elemeire vonatkozó lekérdezéseket támogatja.

Példa szelektív XML-indexre

Tekintsük a következő XML-töredékeket XML-dokumentumként egy körülbelül 500 000 sorból álló táblában:

<book>
    <created>2004-03-01</created>
    <authors>Various</authors>
    <subjects>
        <subject>English wit and humor -- Periodicals</subject>
        <subject>AP</subject>
    </subjects>
    <title>Punch, or the London Charivari, Volume 156, April 2, 1919</title>
    <id>etext11617</id>
</book>

Egy elsődleges XML-index létrehozása ennek az egyszerű sémanak a sok sorában hosszú időt vesz igénybe. Az adatok lekérdezése azzal is jár, hogy az elsődleges XML-index nem támogatja a szelektív indexelést.

Ha csak a /book/title ösvényen és a /book/subjects ösvényen kell lekérdeznie ezeket az adatokat, a következő szelektív XML-indexet hozhatja létre:

CREATE SELECTIVE XML INDEX SXI_index
ON Tbl(xmlcol)
FOR
(
    pathTitle = '/book/title/text()' AS XQUERY 'xs:string',
    pathAuthors = '/book/authors' AS XQUERY 'node()',
    pathId = '/book/id' AS SQL NVARCHAR(100)
);

Az előző utasítás jó példa arra a CREATE szintaxisra, amelyet szelektív XML-index létrehozásakor használ. A CREATE utasításban először adja meg az index nevét, és azonosítsa a táblát és az indexelendő XML-oszlopot. Ezután adja meg az index elérési útját. Az elérési út három részből áll:

  1. Az elérési utat egyedileg azonosító név.

  2. Az elérési utat leíró XQuery-kifejezés.

  3. Választható optimalizálási tippek.

További információ ezekről az elemekről: Kapcsolódó feladatok.

Támogatott funkciók, előfeltételek és korlátozások

Támogatott XML-funkciók

A szelektív XML-indexek támogatják az SQL Server által támogatott XQuery-t a exist(), value(), és nodes() metódusok belül.

  • A exist(), value() és nodes() metódusok esetében a szelektív XML-indexek elegendő információt tartalmaznak a teljes kifejezés átalakításához.

  • A query() és modify() metódusok esetében a szelektív XML-indexek kizárólag csomópontok szűrésére használhatók.

  • A metódus esetében a query() rendszer nem használ szelektív XML-indexeket az eredmények lekéréséhez.

  • A metódus esetében a modify() rendszer nem használ szelektív XML-indexeket az XML-dokumentumok frissítéséhez.

Nem támogatott XML-funkciók

A szelektív XML-indexek nem támogatják az XML SQL Server-implementációjában támogatott alábbi funkciókat:

  • Összetett XS-típusokkal rendelkező csomópontok indexelése: egyesítő típusok, sorozattípusok és listatípusok.

  • Bináris XS-típusú csomópontok indexelése: például base64Binary és hexBinary.

  • Az indexelni kívánt csomópontok megadása olyan XPath-kifejezésekkel, amelyek a helyettesítő karaktert * tartalmazzák a végén: például /a/b/c/*, /a//b/*vagy /a/b/*:c.

  • Bármely, a gyermektől, attribútumtól vagy leszármazotttól eltérő tengely indexelése. Az //<step> eset speciális esetként engedélyezett.

  • XML-feldolgozási utasítások és megjegyzések indexelése.

  • Csomópont azonosítójának megadása és lekérése az id() függvény használatával.

Előfeltételek

A következő előfeltételeknek létezniük kell ahhoz, hogy szelektív XML-indexet hozhasson létre egy felhasználói tábla XML-oszlopán:

  • A felhasználói tábla elsődleges kulcsán klaszteres indexnek kell lennie.

  • A felhasználói tábla elsődleges kulcsa csak 128 bájt méretű lehet, ha szelektív XML-indexekkel használják.

  • Ha szelektív XML-indexekkel használják, a felhasználói tábla fürtözési kulcsa csak 15 oszlopra korlátozódik.

Korlátozások

Általános követelmények és korlátozások

  • Minden egyes szelektív XML-index csak egyetlen XML-oszlopban hozható létre
  • Nem XML-oszlopban nem hozható létre szelektív XML-index
  • A táblák minden XML-oszlopa csak egy szelektív XML-indexet tartalmazhat
  • Minden tábla legfeljebb 249 szelektív XML-indexet tartalmazhat.

A támogatott objektumok korlátozásai

Szelektív XML-indexek nem hozhatók létre a következő objektumokon:

  • XML-oszlopok egy nézetben
  • Táblaértékű változó XML-oszlopokkal
  • XML-típusváltozók
  • Számított XML-oszlopok
  • Több mint 128 beágyazott csomópontot tartalmazó XML-oszlopok.

Tárolási korlátozások

Az indexhez hozzáadható XML-dokumentum csomópontjainak száma véges. A szelektív XML-indexek egyetlen relációs táblába képezik le az XML-dokumentumokat. Ezért nem lehet 1024-nél több nem null oszlop a tábla adott sorában. Emellett a ritka oszlopok számos korlátozása a szelektív XML-indexekre is vonatkozik, mivel az indexek ritkán használt oszlopokat használnak a tároláshoz.

Az adott sorokban támogatott nem null oszlopok maximális száma az oszlopokban lévő adatok méretétől függ:

  • A legjobb esetben 1024 nem null értékű oszlop támogatott, ha az összes oszlop bit típusú.

  • A legrosszabb esetben csak 236 nem null oszlop támogatott, ha minden oszlop nagy méretű varchar típusú objektum.

A szelektív XML-indexek belsőleg egy-négy oszlopot használnak minden indexelt csomópont elérési úthoz. Az indexelhető csomópontok teljes száma 60 és több száz csomópont között mozog az indexelt útvonalakon lévő adatok tényleges méretétől függően.

  • A legrosszabb esetben, ha a csomópontokat részben vagy teljesen a // használatával térképezzük fel a csomópont elérési útjának meghatározásánál, az indexelt csomópontok maximális száma 60.

  • A legjobb esetben, ha a csomópontok leképezése a csomópont elérési útjának definíciója nélkül // történik, az indexelt csomópontok maximális száma 200.

A szelektív XML-indexek az index létrehozásakor vagy módosításakor újraépülnek

Szelektív XML-index létrehozásakor vagy módosításakor az egyszálas, offline módban újraépül. Az ALTER-utasítások gyakran negatívan befolyásolják a lekérdezések teljesítményét az indexelt XML-dokumentumokon.

Egyéb korlátozások

  • A lekérdezési tippek nem támogatják a szelektív XML-indexeket.

  • Az Database Tuning Advisor nem támogatja a szelektív XML-indexeket és a másodlagos szelektív XML-indexeket.

Lásd még