Tényleges táblán alapuló nézetek
A materializált nézetek egy összesítő lekérdezést tehetnek közzé egy forrástáblán vagy egy másik materializált nézeten keresztül.
A materializált nézetek mindig az összesítő lekérdezés naprakész eredményét adják vissza (mindig friss). A materializált nézet lekérdezése sokkal hatékonyabb, mint az összesítés közvetlenül a forrástáblán keresztül történő futtatása.
Megjegyzés
- Annak eldöntéséhez, hogy a materializált nézetek megfelelnek-e Önnek, tekintse át a materializált nézetek használati eseteit.
- A materializált nézeteknek vannak bizonyos korlátai. A funkció használata előtt tekintse át a teljesítményre vonatkozó szempontokat.
- Szükség esetén fontolja meg a frissítési szabályzatok használatát. További információt a Materialized views vs. update policies (Materializált nézetek és frissítési szabályzatok) című témakörben talál.
- A materializált nézetek állapotának monitorozása a materializált nézetek monitorozása című témakörben található javaslatok alapján.
Miért érdemes materializált nézeteket használni?
Ha erőforrásokat (adattárolást, háttér cpu-ciklusokat) fektet be a gyakran használt összesítések materializált nézeteibe, az alábbi előnyökkel jár:
Teljesítménybeli javulás: A materializált nézet lekérdezése általában jobban teljesít, mint a forrástábla lekérdezése ugyanazon összesítő függvény(ek)hez.
Frissesség: A materializált nézetes lekérdezések mindig a legfrissebb eredményeket adnak vissza, függetlenül attól, hogy mikor történt az utolsó materializálás. A lekérdezés egyesíti a nézet materializált részét a forrástábla rekordjaival, amelyek még nem lettek materializálva (a
delta
rész), mindig a legfrissebb eredményeket nyújtják.Költségcsökkentés:A materializált nézet lekérdezése kevesebb erőforrást használ fel a fürtből, mint a forrástábla összesítése. A forrástábla adatmegőrzési szabályzata csökkenthető, ha csak aggregációra van szükség. Ez a beállítás csökkenti a gyakori elérésű gyorsítótár költségeit a forrástáblában.
Például használati esetek: Materialized view use cases (Materialized view use cases).
A materializált nézetek működése
A materializált nézet két összetevőből áll:
- Materializált rész – egy tábla, amely a forrástáblából származó összesített rekordokat tartalmazza, amelyeket már feldolgoztak. Ez a tábla mindig egyetlen rekordot tartalmaz az összesítés csoportosítási kombinációi alapján.
- Változás – a forrástábla újonnan betöltött rekordjai, amelyeket még nem dolgoztak fel.
A materializált nézet lekérdezése egyesíti a materializált részt a delta résztel, így naprakész eredményt ad az összesítő lekérdezésnek. Az offline materializálási folyamat új rekordokat foglal le a deltából a materializált táblába, és frissíti a meglévő rekordokat. Ha a delta és a materializált rész metszete nagy, és sok rekord frissítéseket igényel, ez negatív hatással lehet a materializálási folyamatra. Lásd: Az ilyen helyzetek elhárításának materializált nézeteinek monitorozása .
Materializált nézetek lekérdezései
A materializált nézeteket kétféleképpen kérdezheti le:
A teljes nézet lekérdezése: amikor a materializált nézetet a nevével kérdezi le, a tábla lekérdezéséhez hasonlóan a materializált nézet lekérdezése egyesíti a nézet materializált részét a forrástábla még nem materializált rekordjaival (a
delta
).- A materializált nézet lekérdezése mindig a legfrissebb eredményeket adja vissza a forrástáblába betöltött összes rekord alapján. A materializált és a nem materializált részekről a materializált nézetben a materializált nézetek működése című témakörben olvashat bővebben.
- Előfordulhat, hogy ez a beállítás nem teljesít a legjobban, mivel a lekérdezési idő alatt materializálnia kell a
delta
részt. Ebben az esetben a teljesítmény a nézet korától és a lekérdezésben alkalmazott szűrőktől függ. A materializált nézet lekérdezésoptimalizáló szakasza lehetővé teszi a lekérdezési teljesítmény javítását a teljes nézet lekérdezése során.
Csak a materializált rész lekérdezése: a nézet lekérdezésének másik módja a
materialized_view()
függvény használata. Ez a beállítás csak a nézet materializált részének lekérdezését támogatja, miközben megadja azt a maximális késést, amelyet a felhasználó hajlandó elviselni.- Ez a beállítás nem garantálja, hogy a legfrissebb rekordokat adja vissza, de mindig nagyobb teljesítményűnek kell lennie, mint a teljes nézet lekérdezése.
- Ez a függvény olyan forgatókönyvek esetén hasznos, amelyekben hajlandó feláldozni némi frissességet a teljesítményért, például telemetriai irányítópultok esetében.
Tipp
A materializált részre vonatkozó lekérdezések mindig jobban teljesítenek, mint a teljes nézet lekérdezése. Mindig használja a függvényt materialized_view()
, ha alkalmazható a használati esethez.
A materializált nézetek részt vesznek a fürtök közötti vagy adatbázisközi lekérdezésekben, de nem szerepelnek helyettesítő karakterekből vagy keresésekből.
- Az alábbi példák mindegyike a név
ViewName
alapján materializált nézeteket tartalmaz:
cluster('cluster1').database('db').ViewName cluster('cluster1').database('*').ViewName database('*').ViewName database('DB*').ViewName database('*').materialized_view('ViewName') database('DB*').materialized_view('ViewName')
- Az alábbi példák nem tartalmaznak materializált nézetekből származó rekordokat:
cluster('cluster1').database('db').* database('*').View* search in (*) search *
- Az alábbi példák mindegyike a név
Materializált nézet lekérdezésoptimalizálója
A teljes nézet lekérdezésekor a materializált rész össze lesz kötve a delta
lekérdezési idő alatt. Ez magában foglalja a materializált rész összesítését delta
és összekapcsolását.
- A teljes nézet lekérdezése jobban teljesít, ha a lekérdezés szűrőket tartalmaz a csoporton a materializált nézetlekérdezés kulcsai alapján. A teljesítménytippek szakaszban további tippeket talál arról, hogyan hozhat létre materializált nézetet a
.create materialized-view
lekérdezési minta alapján. - A lekérdezésoptimalizáló olyan összegzési/illesztési stratégiákat választ, amelyek várhatóan javítják a lekérdezési teljesítményt. Például az a döntés, hogy a lekérdezést el szeretné-e keverni , részben a rekordok
delta
számán alapul. Az alábbi ügyfélkérési tulajdonságok némi vezérlést biztosítanak az alkalmazott optimalizálásokkal szemben. Ezeket a tulajdonságokat a materializált nézet lekérdezéseivel tesztelheti, és kiértékelheti a lekérdezések teljesítményére gyakorolt hatásukat.
Ügyfélkérés tulajdonságának neve | Típus | Description |
---|---|---|
materialized_view_query_optimization_costbased_enabled |
bool |
Ha a értékre false van állítva, letiltja az összegzési/illesztésoptimalizálásokat a materializált nézet lekérdezéseiben. Alapértelmezett stratégiákat használ. Az alapértelmezett szint a true . |
materialized_view_shuffle |
dynamic |
A materializált nézetlekérdezés kényszerítése, és (opcionálisan) adott kulcsokat ad meg az elosztáshoz. Lásd az alábbi példákat . |
Példák
A teljes nézet lekérdezése. A forrástábla legutóbbi rekordjai a következők:
ViewName
Csak a nézet materializált részét kérdezheti le, függetlenül attól, hogy mikor volt utoljára materializálva.
materialized_view("ViewName")
Kérdezze le a teljes nézetet, és adjon meg egy "tippet" a stratégia használatához
shuffle
. A forrástábla legutóbbi rekordjai a következők:- 1. példa: elosztás az
Id
oszlop alapján (a használatáhozhint.shufflekey=Id
hasonlóan):
set materialized_view_shuffle = dynamic([{"Name" : "ViewName", "Keys" : [ "Id" ] }]); ViewName
- 2. példa: elosztás az összes kulcs alapján (a használatához
hint.strategy=shuffle
hasonlóan):
set materialized_view_shuffle = dynamic([{"Name" : "ViewName" }]); ViewName
- 1. példa: elosztás az
A teljesítménnyel kapcsolatos megfontolások
A materializált nézet állapotát befolyásoló fő közreműködők a következők:
Fürterőforrások: A fürtön futó többi folyamathoz hasonlóan a materializált nézetek is felhasználják a fürt erőforrásait (CPU, memória). Ha a fürt túlterhelt, a materializált nézetek hozzáadása a fürt teljesítményének romlásához vezethet. A fürt állapotának figyelése fürtállapot-metrikákkal. Az optimalizált automatikus skálázás jelenleg nem veszi figyelembe a materializált nézetek állapotát az automatikus skálázási szabályok részeként.
- A materializálási folyamatot a felhasznált memória és processzor mennyisége korlátozza. Ezek a korlátok a materializált nézetek számítási feladatcsoportjában vannak meghatározva, és módosíthatók.
Átfedés a materializált adatokkal: A materializálás során a rendszer az utolsó materializálás óta a forrástáblába betöltött összes új rekordot feldolgozzák és materializálják a nézetbe. Minél nagyobb a metszet az új rekordok és a már materializált rekordok között, annál rosszabb lesz a materializált nézet teljesítménye. A materializált nézet akkor működik a legjobban,
arg_max
ha a frissítendő rekordok száma (például nézetben) a forrástábla kis része. Ha az összes materializált nézetrekordot vagy a legtöbb rekordot frissíteni kell minden materializálási ciklusban, akkor előfordulhat, hogy a materializált nézet nem működik megfelelően.Betöltési sebesség: A materializált nézet forrástáblájában nincsenek szigorúan kódolt korlátozások az adatmennyiségre vagy a betöltési sebességre vonatkozóan. A materializált nézetek ajánlott betöltési sebessége azonban legfeljebb 1-2 GB/s lehet. A magasabb betöltési arányok továbbra is jól teljesíthetnek. A teljesítmény a fürt méretétől, a rendelkezésre álló erőforrásoktól és a meglévő adatokkal való metszet mennyiségétől függ.
A fürtön lévő materializált nézetek száma: A fenti szempontok a fürtön definiált minden egyes materializált nézetre vonatkoznak. Minden nézet saját erőforrásokat használ fel, és számos nézet verseng egymással az elérhető erőforrásokon. Bár a fürtökben nincsenek szigorúan kódolt korlátozások a materializált nézetek számára, előfordulhat, hogy a fürt nem tudja kezelni az összes materializált nézetet, ha sok a definiált nézet. A kapacitásszabályzat módosítható, ha a fürtben több materializált nézet is található. Növelje a szabályzat értékét
ClusterMinimumConcurrentOperations
, hogy egyidejűleg több materializált nézetet futtasson.Materializált nézetdefiníció: A materializált nézetdefiníciót a lekérdezési ajánlott eljárásoknak megfelelően kell definiálni a legjobb lekérdezési teljesítmény érdekében. További információ: Parancsteljesítmény-tippek létrehozása.
Materializált nézet materializált nézeten keresztül
Egy materializált nézet létrehozható egy másik materializált nézeten keresztül, ha a forrás materializált nézete deduplikációs nézet. Pontosabban a forrás materializált nézet összesítésének a forrásrekordok deduplikálásához kell lennie take_any(*)
. A második materializált nézet bármilyen támogatott összesítési függvényt használhat. A materializált nézet materializált nézeten keresztüli létrehozásával kapcsolatos további információkért lásd a .create materialized-view
parancsot.
Tipp
Ha egy materializált nézetet kérdez le, amely egy másik materializált nézetben van definiálva, azt javasoljuk, hogy csak a függvény használatával kérdezi le a materialized_view()
materializált részt. A teljes nézet lekérdezése nem működik, ha mindkét nézet nincs teljesen materializálva. További információ: materializált nézetek lekérdezései.
Kapcsolódó tartalom
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: