45
Oracle tuning http://download.oracle.com/docs/ cd/B14117_01/ server.101/b10752/toc.htm

Oracle tuning

  • Upload
    hamlet

  • View
    71

  • Download
    0

Embed Size (px)

DESCRIPTION

Oracle tuning. http://download.oracle.com/docs/cd/B14117_01/ server.101/b10752/toc.htm. Teljesítményhangolás eszközei: Diagnostic pack. ADDM. - PowerPoint PPT Presentation

Citation preview

Page 1: Oracle tuning

Oracle tuning

http://download.oracle.com/docs/cd/B14117_01/server.101/b10752/toc.htm

Page 2: Oracle tuning

Teljesítményhangolás eszközei:Diagnostic pack

Page 3: Oracle tuning

ADDM

• Automatic Database Diagnostic Monitor: a folyamatos teljesítményanalízis alapján felhívja az adatbázis adminisztrátor, vagy a fejlesztő figyelmét azokra a szűk keresztmetszetekre, ajánlásokat tesz.

Page 4: Oracle tuning

Tuning pack

Page 5: Oracle tuning

Az optimalizáló

Page 6: Oracle tuning

Query Transformer – lekérdezés átalakító

• View Merging (nézet összeolvasztás)

• Predicate Pushing (feltétel áthelyezés)

• Subquery Unnesting (allekérdezés kibontás)

• Query Rewrite with Materialized Views (lekérdezés átírás materializált nézetekkel)

Page 7: Oracle tuning

Estimator – becslő

• Selectivity – szelektivitás

• Cardinality – számosság

• Cost – költség

Page 8: Oracle tuning

Selectivity – szelektivitás

• A szelektivitás egy nullától egyig terjedő intervallumba eső szám.

• Mindig egy feltételhez kötődik, és azt reprezentálja, hogy sorok egy halmazából hány felel meg a feltételnek.

Page 9: Oracle tuning

Cardinality – számosság

• A számosság a sorok számát mutatja sorok egy halmazában.– Alap számosság (Base Cardinality)– Effektív számosság (Effective Cardinality)– Összekapcsolási számosság (Join Cardinality)– Egyediségi számosság (Distinct Cardinality)– Csoport számosság (Group Cardinality)

Page 10: Oracle tuning

Cost – költség

• A költség a munka egységét, vagy a felhasznált erőforrásokat reprezentálja.

• Az optimalizáló a munka egységének a diszk I/O-t, a CPU felhasználást és a memória felhasználást tekinti.

Page 11: Oracle tuning

Plan Generator – végrehajtási terv generátor

• Kifejezések és feltételek kiértékelése

• Utasítás transzformáció

• Optimalizálási cél meghatározása

• Hozzáférés módja (Access Path)

• Összekapcsolási sorrend (Join Order)

• Összekapcsolási mód (Join Method)

Page 12: Oracle tuning

Optimalizálási cél

• válaszidőre (response time)

• áteresztő képességre (throughput)

Page 13: Oracle tuning

Optimizer_mode

• CHOOSE -deprecated

• ALL_ROWS

• FIRST_ROWS_n

• FIRST_ROWS

• RULE -deprecated

Page 14: Oracle tuning

CHOOSE

• Az optimalizáló választ a költség alapú és a szabály alapú megközelítés között attól függően, hogy rendelkezésre állnak-e statisztikák, vagy nem.

Page 15: Oracle tuning

ALL_ROWS

• Az optimalizáló mindenféleképpen költség alapú optimalizálási módot választ függetlenül attól, hogy rendelkezésre állnak-e statisztikák vagy sem. A cél az áteresztő képesség fokozása. Alapértelmezett.

Page 16: Oracle tuning

FIRST_ROWS_n

• Az optimalizáló itt is mindenképpen költség alapú optimalizálást választ. A cél a leggyorsabb válaszidő, az első n sor leggyorsabb megkapása;

• n=1, 10, 100, 1000

Page 17: Oracle tuning

FIRST_ROWS

• Költség és heurisztika keverékét használja az optimalizáló ahhoz, hogy az első néhány sort a leggyorsabban tudja visszaadni.

Page 18: Oracle tuning

RULE

• Ennek az értéknek a hatására az optimalizáló mindenképpen szabály alapú optimalizálási módot választ függetlenül attól, hogy rendelkezésre állnak-e statisztikák vagy sem.

Page 19: Oracle tuning

Végrehajtási terv (Execution Plan)

Page 20: Oracle tuning

Végrehajtási terv lekérése

• SQL Commands/Explain

• Vagy:

Explain plan for sql_utasítás;

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

Page 21: Oracle tuning

Végrehajtási terv részei

• Művelet (operation)

• Hozzáférés módja (option)

• Művelet eredménysorainak száma (rows)

• Eredményhalmaz mérete (bytes)

• Művelet költsége (cost)

• Feltételek (predicates)

Page 22: Oracle tuning

Feltételek (predicates)

• Hozzáférési feltétel (Access predicate) a művelet végrehajtása közben kerül kiértékelésre, csak a feltételnek megfelelő sorok kerülnek be az eredményhalmazba.

• Szűrőfeltétel (Filter predicate) az eredményhalmazra utólagosan kerül kiértékelésre a szűrőfeltétel, amely alapján tovább szűkülhet az eredményhalmaz.

Page 23: Oracle tuning

Hozzáférési módok (néhány)

• Teljes tábla olvasás (Full Table Scan)

• Index olvasás (Index Scan)

• Sorazonosító olvasás (Rowid Scan)

• Táblaminta olvasás (Sample Table Scan)

Page 24: Oracle tuning

Teljes tábla olvasás (Full Table Scan)

• A teljes tábla olvasás azt jelenti, hogy egy adott táblát a végrehajtás során az elejétől a végéig bejárunk, és minden egyes sorra külön-külön eldöntjük, hogy megfelel-e a WHERE utasításrészben szereplő feltételeknek.

Page 25: Oracle tuning

Optimalizálás full table scan esetén

DB_FILE_MULTIBLOCK_READ_COUNTparaméter: a pufferbe előreolvasott

blokkok száma a full scan során.Operációs rendszer és puffer cache

méret függvénye

Page 26: Oracle tuning

Sorazonosító olvasás (Rowid Scan)

• Ha egyetlen sort keresünk, akkor a sorazonosító olvasás a leggyorsabb mód.

• Általában a sorazonosító olvasás a második lépés az index olvasás után, ha az index nem tartalmazza az eredményhalmazban látni kívánt oszlopokat.

Page 27: Oracle tuning

Index olvasás (Index Scan)

• Az index olvasás egy olyan művelet, amely bejárja az indexet az indexelt oszlopok alapján, majd visszaadja azoknak a sorazonosítók a halmazát, amelyek megfeleltek a keresési kritérium(ok)nak.

Page 28: Oracle tuning

Index olvasás fajtái

• Index Unique Scan

• Index Range Scan

• Index Skip Scan

• Full Scan

• Fast Full Index Scan

• Index Joins

• Bitmap Joins

Page 29: Oracle tuning

Több tábla összekapcsolása

• Nested Loop

• Hash Join

• Sort-merge Join

Page 30: Oracle tuning

Nested Loop

• ha kis méretű adathalmazokat akarunk összekapcsolni és a kapcsolási feltétel segítségével gyorsan el tudjuk érni a második táblát.

• A külső tábla minden sorára megnézzük, hogy a belső tábla valamely sora hozzákapcsolható-e.

Page 31: Oracle tuning

Hash Join

• A végrehajtás során egy hash tábla épül fel a kisebbik adathalmaz kapcsolási kulcsa alapján, majd bejárjuk a nagyobbik adathalmazt és a kapcsolási kulcs alapján megtaláljuk az összekapcsolt sorokat.

• Akkor érdemes Hash Join-t használni, ha a hash tábla elfér a memóriábanPGA

Page 32: Oracle tuning

Sort-merge Join

• Először rendezzük (sort) mindkét adathalmazt,

• majd összeolvasztjuk (merge) a két adathalmazt a kapcsolófeltétel(ek) alapján.

Page 33: Oracle tuning

Sort-merge Join használataa USE_MERGE ajánlással (hint)

• SELECT /*+ USE_MERGE(employees departments) */ * FROM employees, departments WHERE employees.department_id = departments.department_id;

Page 34: Oracle tuning

Rendezések

• Sort Unique

• Sort Aggregate

• Sort Group by

• Sort Join

• Sort Order by

Page 35: Oracle tuning

Sort Unique

• Ha DISTINCT kulcsszóval előírjuk az egyediséget, vagy valamilyen művelet számára biztosítani kell az értékek egyediségét.

• Pl: select distinct email from employees;

Page 36: Oracle tuning

Sort Aggregate

• Valójában nem igényel rendezést, csupán az összesítő műveleteket jelzi.

• PL: select MAX(salary) from employees

Page 37: Oracle tuning

Sort Group by

• A rendezéshez el kell különíteni a sorokat különböző csoportokba.

• PL: select COUNT(*),job_id from employees group by job_id

Page 38: Oracle tuning

Sort Join

• Sort-Merge Join összekapcsolási mód esetén használja ezt a műveletet, ha az alap adathalmazt rendezni kell.

Page 39: Oracle tuning

Sort Order by

• Akkor kerül végrehajtásra ez a művelet, ha az eredményhalmaz sorait rendezni kell, és ezt a rendezést nem lehet megoldani indexek felhasználásával.

• PL: select * from employees order by hire_date

Page 40: Oracle tuning

Statisztikák

• Tábla statisztikák

• Oszlop statisztikák

• Index statisztikák

• Rendszer statisztikák

Page 41: Oracle tuning

Tábla statisztikák

• Sorok száma (számosság – cardinality)

• Blokkok száma

• Átlagos sorhosszúság

Page 42: Oracle tuning

Oszlop statisztikák

• Egyedi értékek száma (egyediségi számosság – Number of distinct values (NDV) )

• NULL értékek száma az adott oszlopban

• Eloszlás (hisztogram)

Page 43: Oracle tuning

Index statisztikák

• Levélblokkok száma

• Szintek száma

• Fürtözési tényező (Clustering factor)

Page 44: Oracle tuning

Rendszer statisztikák

• I/O hatékonysága és kihasználása

• CPU hatékonysága és kihasználása

• A lekérdezés optimalizálónak segítenek az adatok jobb lekérdezési tervek választásában.

Page 45: Oracle tuning

Automatikus statisztika gyűjtése

• Alapesetben engedélyezett a statisztikai adatok gyűjtése új adatbázis létrehozásakor, vagy régi adatbázis frissítésekor.

• Leellenőrizhető:SELECT * FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME='GATHER_STATS_JOB';

• Letiltható:BEGIN DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB'); END;