Programmizma - két kslova Oracle

Néha hallom azt mondják, hogy az Oracle nagyon bonyolult beállítani, hogy „ez ××× - az más kérdés.” Ne fizessen a figyelmet az ilyen nyilatkozatok segített abban az esetben.

Amikor olvastam a tanfolyam az Oracle, meg kellett csinálni a hallgatók képzési tárol. Az egyik diák adta select * from anytable kérelmet, és megállapította, hogy a kliens gépen indul „lelassul”. Megkérdeztem tőle, hogy hány bejegyzések húzta az asztaltól. Felnézett, és azt mondta: „Wow!” Miután azt állítja, hogy az Oracle teljesítménye nem merül fel. És még csak vissza mintegy 20 000 bejegyzés - a számos Oracle nevetséges. Nemrég olvastam a követelmények meghatározása tárolására 3000000000 (hárommilliárd) rekordokat.

A „két kiloslovah” Szeretnék beszélni a problémákat, hogy találkoztam, és hogyan oldottam őket. Lehet, hogy néhány dolog lesz részletesen szóltunk - biztonságosan hagyja őket. Talán valami tisztázatlan marad - kérni és meg kell válaszolni. Talán valami marad nyoma, és a döntés nem lesz a legjobb - írja, elviszlek hozzászólásokat értékelik.

Tehát a feladat rendkívül egyszerű: adatokat másolni egyik asztalról a másikra. Mitől lesz egy boldog tulajdonosa egy hagyományos tárol. Ez így van, akkor valami hasonlót:

Természetesen az Oracle, a parancs is működik, de ha másolni egy nagy rekordok száma szeretnék valahogy felgyorsítani a folyamatot. Itt fogunk felgyorsítása.

Közvetlen terhelés betét

Lásd. Oracle fogalmak. 25. fejezet # 132; Közvetlen terhelés INSERT # 147;

Mint ismeretes, a hely az adat a táblázatban fokozatosan nőtt, de soha nem csökken, ha nem ad ki explicit parancsot a szerver az asztalra tömörítés. Hagyományosan, helyezze be a parancs fut a már lefoglalt blokkok az asztal, keres helyet, és megpróbálja írni az adatokat. Az új blokk osztottak csak azután töltötte minden elérhető.

Az ötlet a közvetlen terhelés betét átvinni szerver nem a nyers adatokat, és készre formázott blokkok - csak akkor kell írni a blokkokat a táblázatban. Természetesen ez a megközelítés használt blokkok ne töltse - kitöltve, vagy teljesen szabad blokkok, vagy új tábla.

Doing közvetlen terhelés betét SQL * Loader segédprogram. része az Oracle kliens szoftver, de ez megköveteli, hogy a kliens és a szerver fut ugyanazon a platformon elérhető, például egy ilyen módszer az adatok a Windows, a Solaris nem fog működni. Ugyanezen, hogy ezt a módszert használja a szerver, akkor használja a célzást append.

Szóval, itt van az első lépés a megoldás a mi problémánk:

Ha másolja az adatokat a közvetlen terhelés betét, akkor nem kell tárolni minden olyan információt visszagörgetéshez, azaz rollback szegmens szinte nem növekszik.

De ne felejtsük el, hogy együtt változik táblázatok és mindenféle kiegészítő szerkezetek, mint például indexek. Azok változásait is írt a rollback szegmensek. És ha a tábla jön létre, például 5 indexek, a méret a szükséges rollback szegmens nőtt 3-4 alkalommal. Ezért, ha az adatmennyiség másolandó képest szignifikáns az adatmennyiség már szerepel a táblázatban. akkor van értelme, hogy elpusztítsa az indexeket a céltáblát, és újra másolás után. Annak érdekében, hogy ne hozzon létre indexeket kézzel próbálja automatizálja ezt a folyamatot. script alábbi sorozatát hozza létre parancsokat kell futtatni után a másolatot újra létrehozni az indexeket:

A kezdők vádolni túlzott összetettsége parancsok - amelyre azt válaszolom, hogy semmi bonyolult, a probléma nem a bonyolultsága a kérelmet, és a száraz nyelv a fordítási táblák és nézetek SQL nyelv szinte emberi. Szakemberek, viszont lesz szemrehányást nekem, hogy nem veszi figyelembe a különböző finomságok, például megosztjuk indexek - válaszolni fog egy idézet Prutkov: „Senki sem fogja magáévá a hatalmas *”.

Általában az eredmény után, ezt a kérést nem szabad tárolni, lehetőség van arra, hogy elpusztítsa kódokat. Kérése, hogy hozzon létre egy script a megsemmisítése az index, elég egyszerű:

Bár, ismétlem, senki sem zavar, hogy írjon az összes parancsot kézzel.

Nyilvánvaló, hogy gyorsítsák fel van értelme tiltani az elsődleges és idegen kulcsok. Ezáltal is csak abban az esetben, ha az adatmennyiség másolandó jelentős mennyiségéhez képest a meglévő adatokat. Formálisan kulcsok indexek nem csatlakozik (kivéve indexek létre, hogy támogassa az elsődleges kulcs), de valójában fenntartása idegen kulcsok nélkül megfelelő indexek - túl erőforrás-igényes feladat. Tehát, ha úgy döntött, hogy elpusztítsa indexek, kulcsok is kell kikapcsolható.

Kérdés, hozzon létre egy szkript, amely lehetővé teszi / letiltja a gombok nagyon egyszerű, de a teljesség kedvéért hozok neki itt:

párhuzamosság

Ezt úgy lehet elérni több módon. Első módszer - ha a táblázat jelzi a párhuzamosságát, amikor a megengedett műveletek ebben a táblázatban.

Lásd. Oracle8i SQL Reference. 7. fejezet # 132; SQL utasítások # 147;

Mellékhatás - futhat párhuzamosan néhány parancsot, hogy jobb lenne elvégezni egymást követően. És fordítva - a csapat nem lehet párhuzamosított.

A második út - meghatározza a párhuzamos csipetnyi közvetlenül a parancsot. Itt azt kell szem előtt tartani a következő: először is, az adatok olvasási, írási őket - a különböző folyamatok, és szükségük van a párhu- külön; Másodszor, a rekord nem párhuzamosítható, ha nem oldja meg kifejezetten lehetővé teszi a párhuzamos DML parancs. Tekintettel a fenti szkript másolni az adatokat a következő alakú:

Ott keletkezik négy folyamatok rögzítésére és négy - olvasni. Ha a rekord megy sokkal lassabb, mint az olvasás (például nem pusztult indexek), lehetséges, hogy a rögzítési folyamat több, mint olvasó.

És még egy dolog. Nem lehet felvételt párhuzamosított, ha nem engedélyezett a legalább egy idegen kulcs, ha a céltábla egyik leányvállalata. És az Oracle 8.0 nem párhu- rekord, ha olvasás jelentkezik a linkre, azaz egy másik példány az Oracle.

memóriafoglalási

Nem szabad elfelejteni, hogy a leadás sebessége lemezterület az adatok, ami befolyásolja az adatok írási sebességet.

Mint ismeretes, ha a táblázat véget ér, akkor azt a új mértékben - egy sor egybefüggő. A méret a mértéke határozza meg a következő és pctincrease paramétereket. A parancsban megadott create table. Ha kis mértékben, akkor álljatok, de a választék gyakrabban fordulnak elő. Ha a mértéke nagy, elkülönített mértékben ritkák, de sokáig. Emlékeztetni kell arra, hogy az adatok szótárban, ha változik blokkolt monopólium, azaz, ha az egyik párhuzamos folyamatok kért mértékben, de ezúttal a kérelmet átadja egy másik folyamat, az első nő, és várjon.

Adjon egyértelmű tanácsot mértékben mérete nem lehet, ez függ az adatmennyiség, azaz a „szélesség” az asztalra, és a bejegyzések száma. Kívánatos azonban, hogy milyen mértékben méretek minden táblázatokat többszörösei - ez csökkenti a töredezettség egy asztal helyet, és felgyorsítja a keresési teret.

rollback szegmensek

Ha figyelmesen megnézzük a képet használatát szemléltető rollback szegmensek, láttuk, hogy használják egy időben. Tegyük fel például, hogy van 4 szegmens - R01, R02, R03 és R04. Azaz, ha egy tranzakció használnak, például szegmensben R01, a következő tranzakciót lesz rendelve R02 szegmensben.

Előfordulhat, hogy az első tranzakció kiterjed rollback szegmens úgy, hogy szorosan jön a táblaterülethez határokat. A megerősítés után a tranzakció szegmensben van megjelölve szabad, de nem csökken a méret - fog részt csökken a méret a démon később. A második ügylet nem lehet elég rollback szegmensek - egyszerűen azért, mert nincs hová növekedni.

A megoldás suschestvet - elég erő egy második tranzakciós rollback szegmens ugyanaz, mint az első:

következtetés

Ó, milyen csodálatos a mi felfedezéseket.

Ha szeretné, hogy ossza meg velem az örömeit és nehézségeit az Oracle - leveleket írok. Ha az öröm, és lusta írni, akkor lehet nyomtatni egy színes nyomtató és ragasztott egy weboldalon / monitor / homlok hagyományos gomb 88 × 31:

* Kozma bárok, „A gyümölcsök a meditáció.” „Gondolatok és aforizmák” ötlet száma 3

Tagjai a Klónok * nix régen írhat kötegfájlokat bármilyen nyelven. Ehhez szükségünk van csak pont az első sorban a tolmács nevét. »» »

Command nyelven Windows NT - még ferde és ravasz, de egy hatékony eszköz, hogy lehet és kell használni. »» »

Néha hallom azt mondják, hogy az Oracle nagyon bonyolult beállítani, hogy „ez ××× - az más kérdés.” Ne fizessen a figyelmet az ilyen nyilatkozatok segített abban az esetben. »» »

ajánl
Meglepően sok
leveleket ír