Sequencing (szekvenciák)
Sequencing - egy olyan struktúra előállítására egyedülálló egész értékek. Csak egy munkamenet lehet kérni a következő érték, és növeli a számláló. Ezért az összes előállított értékek egyedi lesz.
Mechanizmusok; szekvenciák független táblázatok, zárszerkezet és a tranzakciókat. Ez azt jelenti, hogy a szekvenálás generálhat ezer egyedi értékek egy perc alatt - sokkal gyorsabb, mint a mintavételi módszer az adatok frissítése, és erősítse meg a változásokat.
7-6 ábra mutatja, hogy két ülés van kiválasztva értékeit szekvenálás SEQ1. Felhívjuk figyelmét, hogy az egyes SEQ1.NEXTVAL lekérdezés generál egy egyedi szám. Az érték a rend jön létre, attól függően, hogy a kezelési idő, és az értéke növekszik világszerte helyett egyetlen munkamenetben.
létrehozása szekvenciák
A teljes szintaxis létrehozásához szekvenálás
CREATE sorrend [sémát.] Sequencename
[Értéknek, szám]
[Kezdeni szám]
[MAXVALUE száma | NOMAXVALUE]
[MINVALUE száma | NOMINVALUE]
[CACHE száma | nocache]
Létrehozása szekvenálás is nagyon egyszerű. Például szekvenálás ábrán alkalmazott 7-6 jött létre azzal a paranccsal
hozzon létre szekvencia seq1;
A rendelkezésre álló lehetőségek
CIKLUS irányelv nagyon ritkán használják, mert lehetővé teszi, hogy létrehoz másolatokat. Ha a szekvenálás előállításánál használt elsődleges kulcs értékek ciklus azaz csak funkciója van olyan adatbázis, amely eltávolítja a régi feljegyzések gyorsabb, mint a szekvenálás generál új.
Cache-kritikus értékeket teljesítményét. Mintavétele szekvenálás végezhető csak egy munkamenet egy időben. A mechanizmus a generáció ochent értékek hatékony: ez sokkal gyorsabb, mint a eltömődése, frissítése sorok vagy tranzakció kezelésére. De még ennek ellenére, minta szekvenálása az ülések pont lehet a verseny. CACHE irányelv lehetővé teszi az Oracle, hogy létrehoz egy blokkot szoba. Előre generált értékeket választunk gyorsabb, mint a generáció a kérelmet.
Az alapértelmezett értékek számát cache csak 20. A tapasztalat azt mutatja, hogy ez általában nem elég. Ha az alkalmazás kiválasztja a szekvencia 10-szer egy második, majd állítsa be a cache-érték 50 ezer. Ne légy félénk erről
A szekvenciák alkalmazása
Ahhoz, hogy használni szekvenálás ülésen kérheti az alábbi értékeket egy pseudocolumn NEXTVAL, ami szekvenálás értékének növelése, vagy kérheti az utolsó (aktuális) érték az aktuális munkamenet segítségével pseudocolumn CURRVAL. NEXTVAL értéke globálisan egyedi: minden alkalommal kérte, hogy ezt az értéket kapnak a különböző, megnagyobbodott eredmény minden kérelem esetében. CURRVAL érték konstans minden ülését, amíg van egy új kérelmet NEXTVAL. Van nem lehet tudni, hogy mi az utolsó érték volt segenrirovano szekvenálás: csak válassza ki a következő értéket hívja NEXTVAL, és megtalálni az utolsó használt munkamenet segítségével CURRVAL. De nem találja az utolsó értéket generált.
A CURRVAL a sorrend az utolsó értéket ki az aktuális munkamenet, nem feltétlenül az utolsó értéket adott ki. Nem lehet kiválasztani a CURRVAL amíg kiválasztása után NEXTVAL.
Egy tipikus példa a szekvenálás generálására az elsődleges kulcs értékeinek. A következő példa ORDER_SEQ szekvenálás lehet egyedi értékek nagyságrendileg sorszámokat és LINE_SEQ, hogy létrehoz egy egyedi értéket rendelési sor. Kezdetben létre szekvenálás (egyszer)
létrehozásához szekvenciát order_seq kezdeni 10;
létrehozásához szekvenciát line_seq kezdeni 10;
Akkor rend és ügyrendi helyezzen egyetlen tranzakció
beilleszteni megbízások (ORDER_ID, ORDER_DATE, ügyfélazonosító)
beilleszteni order_items (ORDER_ID, order_item_id, termékazonosító)
beilleszteni order_items (ORDER_ID, order_item_id, termékazonosító)
Az első INSERT parancs létrehoz egy egyedi rendje ORDER_SEQ szekvenálás számot az ügyfél a szám 1000. Aztán a második és a harmadik INSERT parancsot add a két elem az aktuális érték a rend szekvenálás ORDER_SEQ az érték a külső összekötő elemek érdekében a rendelési kulcsot, és a következő érték LINE_SEQ szekvenálás, hogy létrehoz egy egyedi azonosító minden elem. Végül a tranzakciós megerősítik.
A szekvenálás nem kötődik semmilyen asztalra. Az előző példában is használhatjuk, hogy egy szekvenálás elsődleges kulcs értékei a megrendelések asztalra, és a sorrend táblázat elemei.
COMMIT nem szükséges növelni podvterzhdeniya számláló: számláló növekedés következik be egyszer és mindenkorra, és látható, hogy minden alkalommal növekszik. Nem törölheti a megnövekedett számláló. Sequence frissítik függetlenül a mechanizmus az irányítás tranzakciókat. Ezért mindig lesznek a hiányzó számokat. Szünetek nagy lehet, ha az adatbázis újraindítása és a cache irányelv használjuk a számlálót. Minden szoba, hogy hoztak létre, és nem választott el fog veszni, ha kikapcsolja az adatbázisban. Miután a következő indításkor az aktuális értéket állítunk elő utoljára, mostanában nem használt. Így az alapértelmezett egyenként 20 újraindítani okai veszteség 20 számokat.
Ha BI döntött, hogy nem lehet rés a sorszámokat, akkor lehet, hogy létrehoz egy egyedi szám, a másik. Az előző példában megbízásokat az aktuális rendelési szám tárolható a táblázatban a kezdeti érték 10
create table current_on (ORDER_NUMBER szám);
beilleszteni current_on értékek (10);
Ezután a kód létrehozásához a sorrend az alábbiak szerint
frissítés current_on beállítva ORDER_NUMBER = ORDER_NUMBER + 1;
beilleszteni megbízások (ORDER_NUMBER, ORDER_DATE, CUSTOMER_NUMBER)
értékeket ((válassza ORDER_NUMBER származó current_on) SYSDATE, '1000');
Ez a munka szempontjából a generáció egy egyedi sorszámát, és amint a növekedés számának sorrendjében történik egy ügylet, amely növekedés megszűnik abban az esetben nebhodimo: nem lesz rés a sorrendben, amíg a megbízás nem szándékosan törölni. De ez sokkal kevésbé hatékony, mint a szekvenciák alkalmazása, mivel a kód gyengén termelő egy többfelhasználós környezetben. Ha több ülés megpróbálja lezárni, és növeli az értékét az aktuális a sorban, amely tartalmazza a megrendelés számát, az alkalmazás még mindig lóg Posklku fog várni a sor.
meg lehet változtatni létrehozását követően szekvenálás. A parancs szintaxisa a következő
ALTER SORREND sequencename
[Értéknek, szám]
[Kezdeni szám]
[MAXVALUE száma | NOMAXVALUE]
[MINVALUE száma | NOMINVALUE]
[CACHE száma | nocache]
ALTER parancs ugyanaz, mint a CREATE parancs egy kivétellel: nem tudja beállítani a kezdeti értéket. Ha azt szeretnénk, hogy frissítse a kezdeti érték - az egyetlen módja annak, hogy távolítsa el a szekvenálás, és hozzon létre egy újat. Az érték módosításához cache teljesítmény javítása érdekében, akkor a következő parancs futtatásával
megváltoztatják szekvenciát order_seq gyorsítótár 1000;
Ahhoz, hogy távolítsa el a szekvenálás futtatni a parancsot
dobja szekvencia order_seq;