Know-how, előadás, fizikai adatbázis-modell létrehozása

A lekérdezés teljesítményének javítása: Particionálás

vágási

Számos adatbázisban óriási mennyiségű adatot tárolnak a táblázatokban. Minél nagyobb az asztalméret, annál hosszabb ideig tart, ha mindkét művelethez sor kerül az asztal sorainak kiválasztásához, és bizonyos adatbázis-adminisztrátori függvények végrehajtására. Például a mentéshez és a visszaállításhoz. A nagy indexelt asztalok is nagy indexekkel rendelkeznek, amelyek sok időt igényelnek ahhoz, hogy a DBMS dolgozzon velük.

A partícionálás az asztalok és indexek fizikai eloszlásának módja két vagy több táblaterület között, a táblázatok kulcsoszlopainak értékeitől függően az I / O műveletek teljesítményének javítása érdekében. Egy táblázatos töredék külön táblaterületen található. a táblázat egy része lesz. A partícionálás javítja a biztonsági mentés és a helyreállítás hatékonyságát azáltal, hogy kevesebb feladattal végzi ezeket a feladatokat. A következő fejezet külön fejezetét a táblaterületek létrehozásának megvitatására fordítják. Ennek az anyagnak a megértéséhez elegendő számunkra, hogy tudjuk, hogy ez egy előre definiált nevű memóriafájl egy vagy több lemezen, amely név szerint SQL-utasításokban érhető el.

A végrehajtás felosztásának egy fontos fogalom az oszlop a táblázatban, azokhoz az értékekhez képest, amelyek az adatbázis nem a fizikai elválasztás a táblázat különböző táblaterületekhez merevlemezek. Ezt az oszlopot a partíciós kulcsnak nevezik.

Az Oracle DBMS többféle particionálást támogat. zenekar particionálás, hash particionálás. összetett particionálás. és különböző indexek szétválasztását is.

Területosztás

A tartomány-partícionálás azt jelenti, hogy a táblázatos sorokat különböző előre definiált táblaterületekre osztják fel a partíciós kulcs értékétől függően. Az ilyen táblázathoz való hozzáférést, valamint bármely másikat a neve és az egyes táblaterületeken található szakaszokhoz való hozzáférés teszi lehetővé. külön beszerezhető. Például egy szervezet pénzügyi negyedéves jelentéseit tartalmazó táblázatot dátum szerint lehet partícionálni, hogy az egyes negyedévekre vonatkozó jelentések külön táblaterületen tárolódjanak. A szakaszok ilyen megszervezésével csak egy negyedéves adat kerül kiválasztásra egyetlen táblaterületből, amely javítja az adatbázis egészének hatékonyságát.

A tartomány szerinti particionálás a táblázatos sorok rendezésén alapul (szakaszterületek) a partíciós kulcs oszlopok értéke alapján. Koncepcionálisan, a táblázat, osztva a tartomány, elrendezve, mint a 2. ábrán. 11.2 az alábbi példában. Particionált táblák létrehozásához használja az SQL CREATE TABLE parancsot a PARTITION klauzulával. Az Oracle adatbázisban a partíciós kulcs nem lehet LONG típusú.

Know-how, előadás, fizikai adatbázis-modell létrehozása


Ábra. 11.2. Példa a tartomány felosztására

Egy példa. Tekintsük a megrendelések feldolgozását. Tegyük fel, hogy van egy Értékesítési táblázat benne. amelyben tárolják az ügyfelek számának, idejének és árának adatait. Az adatbázistervező a partíción keresztül, azaz - negyedévente, a táblázatot az adatbázisban képviselheti. Tegyük fel, hogy négy előre definiált táblaterületünk van: ts_01, ts_02, ts_03, ts_04. négy lemez felett, az alábbi ábrán látható módon.

Az alábbi forgatókönyv töredéke meghatározza az értékesítési táblázatot a szakaszok fizikai elrendezésével, ahogyan a fenti ábra is mutatja:

Ahhoz, hogy hozzáférhessen a táblázatban található táblázatokhoz, a harmadik negyedév értékesítéseiről tudjon meg többet, használhatja a SELECT parancsot. az alábbiak szerint:

Amint láthatjuk, meg kell adnunk a PARTITION opciót (a szekció nevét) a táblázat neve után a FROM klauzulában.

Az adatbázis adminisztrátor könnyen törölheti, hozzáadhatja, mozgathatja, oszthatja, csonkolhatja és módosíthatja a szakaszokat az ALTER TABLE parancs segítségével. Egyedi szakasz törölhető a megfelelő táblaterület törlésével is.

hash particionálás

Hash partícionálás (hash partíciózás): a táblázatos sorok egyenletes elosztása a kijelölt táblaterületekhez a partíciós kulcs értékétől függően. amely ebben az esetben meg van szüntetve. Ez a fajta partícionálás hasznos olyan karakterláncokhoz, amelyeknek a partíciós kulcsértékek elosztása egyenetlen vagy gyengén csoportosult. Ha az adatbázis tervező úgy dönt, hogy hozzon létre egy hash-particionált tábla, elegendõ, ha pontosan képviselik a méret a táblázatban, mint egy hash beágyazott Oracle adatbázis algoritmusok kiszámításához használt méret a vonal helyzetét a fizikai adatbázis oldalon. Az érvénytelen táblázatméret meghatározása nagyszámú összeütközéshez vezethet, pl. hogy az ugyanazon az oldalon különböző kulcsértékekkel érjen el vonalakat, ami a túlcsordulási láncok és a kiegészítő I / O támogatásához vezet.

Egy példa. Tekintse meg ugyanazt a táblázatot Értékesítés. mint az előző példában, és ugyanazt a sémát (11.2. ábra). Az ügyfél-azonosítást azonban partíciós kulcsként használjuk. Ne feledje, hogy az oszlopok értékeinek eloszlása ​​nagyon egyenetlen lehet. A hash-partíciós értékesítési tábla létrehozásához használt SQL-kód egy töredéke így írható:

A PARTITION BY HASH záradék (s_customer_id) azt mondja az Oracle számára, hogy partíciós kulcsot oszt meg az s_customer_id partícióval. Javaslatok fajok (elválasztó Q01 TABLESPACE ts_01 nevének meghatározására szakasz st_q01 és elhelyezése a megfelelő táblaterületre ts_01.

Kompozit elválasztás

A kompozit partícionálás a tartományosztás és a hasisz partícionálás kombinációja. Ez azt jelenti, hogy a tábla a táblaterületek között a partíciós kulcsértékek alapján oszlik meg. akkor a rangsorok mindegyik kapott szakasza alárendelt szakaszokra vagy alfejezetekre van osztva, majd a sorok egyenletes elosztása a slave szakaszok között a hash kulcs értékével.

Egy példa. Tekintsük ugyanazt, mint az előző példában, az értékesítési táblázatot és a táblaterületek azonos sémáját (11.2. Ábra). A tartomány partíciós kulcsaként használja az értékesítési dátumot. A hasító partíciós kulcsként az ügyfelet azonosítják. Most azonban a tartomány minden szakaszát egy előre meghatározott számú alszakaszra osztják. Az összetett particionálással rendelkező értékesítési táblázat létrehozásának SQL kód egy töredéke így írható:

Kapcsolódó cikkek