100 likes | 181 Views
Ny árády Péter adatbázis optimalizálás http://oraoptimization.blogspot.com. Architektúra (Oracle Library – Concepts) http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/toc.htm. Logikai felépítés. Data block: fix méret (pár byte) – freelist (PCTFREE, PCTUSED params).
E N D
Nyárády Péteradatbázis optimalizáláshttp://oraoptimization.blogspot.com Architektúra (Oracle Library – Concepts) http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/toc.htm
Logikai felépítés Data block: fix méret (pár byte) – freelist (PCTFREE, PCTUSED params). Extent: folytonosan elhelyezkedő data blockok, területfoglalás extentek formájában – új extent foglalása bitmap alapján. Segment: azonos célra foglalt, egy tablespacen belüli extentek.ideiglenes szegmensek nagyobb memóriaigényű műveletknél(def. SYSTEM => érdemes külön temporary tablespaceket létrehozni).
Tablespaces + Fizikai felépítés • Tablespaces: legn. logikai tárolási egység:SYSTEM: data dictonary+eljárások (d.m.)SYSAUX: kieg. – egyéb metaadatokTEMP (opc.): feldolgozás esetén ideigle-nes tárolásra - +user tablespaceslocally mngd: bitmap (AUTO/MANUAL)dictionary mngd: data dictionary • Datafile: tablespace adatait tárolja fizikailag. Egy tablespacehez és adatbázishoz tartozhat csak.Control files: indításhoz + működéshez. Célszerű több példányt külön lemezeken tárolni és karbantartani egyidejűleg.
Séma objektumok 1. • Séma: egy felhasználóhoz tartozó logikai adatstruktúrák összessége. • Táblák: alap tárolási egység • tárolása: külön szegmenst foglalunk a létrehozásakor • létrehozásnál megadott oszlopsorrend fontos (kiv. LONG) • tömörítés: szimbólumtábla + hivatkozás • Nézetek: virtuális táblák – megjelentés, adatrejtés • tárolás: data dictionaryben a lekérdezést • Materializált nézetek: adatok összegzése, számítása, replikálása • főként adattárházak esetén hasznos • optimalizaló automatikusan felismeri, ha egy lekérdezést ki • lehet elégíteni vele => behelyettesít ~ hasonlít indexekre.
Séma objektumok 2. • Szinonimák: alternatív név sokféle objektumtípusra (public/private) • biztonság + kényelem, definíció tárolása a data dictionaryben • alkalmazások esetén hasznos => hivatkozott objektum változása • esetén csak a szinonimát kell árírni, az alkalmazást nem. • Indexek: információkeresés gyorsítása – I/O műveletek csökkentése • UNIQUE/NONUNIQUE – célszerű explicit megadni • összetett indexek: fontos a megadott oszlopok sorrendje • tárolás: indexszegmens – ownertől különböző tablespaceben is, sőt különböző diszken is akár => párhuzamosítható • kulcstömörítés: prefix+suffix rész, pl. több attribútumra vonatkozó unique indexeknél => -disk –I/O +minimális CPU • Oracle B-fát használ => logn keresési idő • Bitmap indexek: adattárházak esetén; ekviv. vizsgálatoknál
Séma objektumok 3. • function-based indexes: függvény értékét tárolják. Pl:CREATE INDEX idx ON table_1 (a + b * (c - 1), a, b);SELECT a FROM table_1 WHERE a + b * (c - 1) < 100;CREATE INDEX uppercase_idx ON employees (UPPER(first_name));SELECT * FROM employees WHERE UPPER(first_name) = 'RICHARD'; • Index-Organized tables: hagyományos (heap) helyett primary key szerint rendezzett B-fában tároljuk az adatokat. sok oszlop esetén levelek méretnövekedése => overflow alkalmazás: OLTP, Internet (kereső motorok, portálok), e- kereskedelem, adattárházak, stb. • Application Domain Indexek: indexelés kiterjesztése komplex adattípusokra – doksik, spatial adatok, képek, videók, stb.
Data Dictionary • Központi, csak olvasható referencia táblák és nézetek.séma objektumok definíciója; séma objektumok számára allokált és felhasznált területek; oszlopok alapértelmezett értékei; integritás kényszerekről információk; az adatbázis felhasználóinak nevei; az egyes felhasználókhoz tartozó jogok és szerepek; naplózási információk; egyéb általános adatbázis információk • Base tables: adatbázisról infok; csak az adatbázis olvashatja és írhatja; titkosítva tárolódnak • User-Accessible Views: felhasználók számára megjelenített információk Minden base table és user-accessible view a SYS sémájában
Memória felépítése 2. • Szoftverkód területek: éppen futó vagy futtatható kódok • System Global Area (SGA): szerver- és háttérfolyamatok között megosztott információk – adatok+vezérléssel kapcsolatos infok • Buffer Cache: beolvasott adatblokkok – write list+LRU list • Shared Pool: három részre osztható: • Library Cache: futtatott SQL utasítások elemzési fája + végrehajtási terve – memóriatakarékos, lekérdezésgyorsítás – LRU algoritmus • Dictionary Cache: data dictionary cachelése • Result Cache: lekérdezések eredményének cachelése • Program Global Area (PGA): minden egyes szerverfolyamathoz létrejön egy PGA – hozzá tartozó adat+vezérléssel kapcsolatos információk • Session memória: session specifikus információk • Private SQL Area: változók értékei, lekérdezések végrehajtásának állapotinformációi
Processzek • Szerverfolyamatok: • Felhasználói processzek kezelése: • Elemzi és futtatja az SQL utasításokat • Beolvas az SGA–ba • Visszaadja az eredményeket helyes formátumban • Háttérfolyamatok: • Teljesítmény maximalizálása, felhasználók kezelése, stb. • Információk: V$BGPROCESS nézetből nyerhetőek ki. • ARCn, CKPT, DBWn, Job Queue Process, LGWR, PMON, QMNn, RECO, SMON, s számos egyéb folyamat, melyek nagy része a 11g újdonságai közé tartozik…