+ All Categories
Home > Documents > Matlanek 2007 sql_optimalizace

Matlanek 2007 sql_optimalizace

Date post: 04-Jul-2015
Category:
Upload: jiri-kiml
View: 252 times
Download: 7 times
Share this document with a friend
24
www.i.cz Vaše jistota na trhu IT Optimalizace SQL Jiří Kiml, ICZ a.s. 20/09/2007, Praha
Transcript
Page 1: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Optimalizace SQL

Jiří Kiml, ICZ a.s.20/09/2007, Praha

Page 2: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Agenda

►Úvod

►Obecná moudra (pravidla)

►Oracle specifické

► Informix specifické

►Pokročilé techniky optimalizace

►Závěr

►Otázky + diskuze

Page 3: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Obecná moudra►Optimalizace je drahá

Page 4: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Co může být špatně

►Datové typy

►Db design

►Pomalé disky

►Pomalá síť►Špatné/chybějící statistiky

►Chybějící indexy

►Špatné sql příkazy

►… hloupí uživatelé …

Page 5: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Co si někteří neuvědomují►Jen jeden index při join a sort

►Některé konstrukce vylučují použití indexu

►NOT in a NOT EXIST

►Like ‘%A%’ matches ‘*[a|b]*’

►!=► I temporary tabulky mohou mít indexy

►Funkční indexy

►Cost based optimalizátor se rozhoduje na základě statistik

Page 6: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Optimalizátor►Cost based

►Vypočte cenu dotazu: cena IO + W* cena CPU

►Potřebuje statistiky

►Max, min, počet řádek

►Distribuce dat►Hinty/directivy

►Proč je (ne)používat

►{+EXPLAIN, AVOID_EXECUTE}

►/*+dynamic_sampling …*/

► /*+ GO_FASTER */

Page 7: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Jak měřit čas►Problémy

►Jiní uživatelé

►Databázová cache

►Dlouhé trvání dotazu

►Zámky►Cost odhady optimalizátoru

►Vzorek dat (ladit v testovacím prostředí)

►Critéria čeho chceme dosáhnout (produkční prostředí)

►Logování sql příkazů

Page 8: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Agenda

►Úvod

►Obecná moudra (pravidla)

►Oracle specifické

► Informix specifické

►Pokročilé techniky optimalizace

►Závěr

►Otázky + diskuze

Page 9: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Oracle specifické►Temporary tabulky

►Divná implementace

►Session/transaction specifické

►Definice je persistentní

►Pozor na: Select from select

►Plán dotazu

►Sql plus

►Toad

►SQL Developer

►SQL Access/Tuning advisors

Page 10: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Ukázky

►SQL Developer

►create index trn.ii_tr_adresa on trn.tr_adresa(jmeno);

►select * from trn.tr_adresa where jmeno = 'ICZ';

►Enterprise Manager – SQL Advisors

►Reálný příklad

Page 11: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Analytické funkce► SELECT empno, deptno, COUNT(*) OVER (PARTITION BY deptno)

DEPT_COUNT FROM emp WHERE deptno IN (20, 30);

► EMPNO DEPTNO DEPT_COUNT ► ---------- ---------- ---------- ► 7369 20 5 ► 7566 20 5 ► 7788 20 5 ► 7902 20 5 ► 7876 20 5 ► 7499 30 6 ► 7900 30 6 ► 7844 30 6 ► 7698 30 6 ► 7654 30 6 ► 7521 30 6

Page 12: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Agenda

►Úvod

►Obecná moudra (pravidla)

►Oracle specifické

► Informix specifické

►Pokročilé techniky optimalizace

►Závěr

►Otázky + diskuze

Page 13: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Informix specifické►Temporary tabulky WITH NO LOG►Select from select v IDS 11 ;-(►Plán dotazu

►Set explain on

►Na serveru, v home, v aktualním adresáři

►{+EXPLAIN, AVOID_EXECUTE}►Statistiky

►Update statistic [Low|medium|high]

►Před IDS 11 – nutný update po vytvoření indexu

Page 14: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

► INFO - catalog: Columns Indexes Privileges References Status ...

► Display column names and data types for a table.

► ----------------------- stores_demo@plch_tcp ----------------------► Column name Type Nulls

► catalog_num serial no► stock_num smallint no► manu_code char(3) no► cat_descr text yes► cat_picture byte yes► cat_advert varchar(255) yes

Tabulka Catalog

Page 15: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Indexy Catalogu► INFO - catalog: Columns Indexes Privileges References

Status ...► Display information about indexes for the columns in a table.

► ----------------------- stores_demo@plch_tcp ---► Index_name Owner Type/Clstr Access_Method Columns

► 108_21 kiml unique/No btree catalog_num

► 108_22 kiml dupls/No btree stock_num► manu_code

Page 16: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Where manu_code = ‘HRO’►QUERY:►------►select * from catalog where manu_code = 'HRO'

►Estimated Cost: 6►Estimated # of Rows Returned: 5

► 1) kiml.catalog: SEQUENTIAL SCAN

► Filters: kiml.catalog.manu_code = 'HRO'

Page 17: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

create index► create index ii_catalog_manu_code on catalog(manu_code);

QUERY:

------

select * from catalog where manu_code = 'HRO'

Estimated Cost: 6

Estimated # of Rows Returned: 5

1) kiml.catalog: SEQUENTIAL SCAN

Filters: kiml.catalog.manu_code = 'HRO'

Page 18: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Update statistics► update statistics for table catalog;

►Kolik řádků dotaz opravu vrátil ?

QUERY:------select * from catalog where manu_code = 'HRO'

Estimated Cost: 1Estimated # of Rows Returned: 7

1) kiml.catalog: INDEX PATH

(1) Index Keys: manu_code (Serial, fragments: ALL) Lower Index Filter: kiml.catalog.manu_code = 'HRO'

Page 19: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Update statistics high► Update statistics high for catalog

QUERY:

------

select * from catalog where manu_code = 'HRO'

Estimated Cost: 2

Estimated # of Rows Returned: 12

1) kiml.catalog: INDEX PATH

(1) Index Keys: manu_code (Serial, fragments: ALL)

Lower Index Filter: kiml.catalog.manu_code = 'HRO'

► V IDS 11 už to bude jinak

Page 20: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Agenda

►Úvod

►Obecná moudra (pravidla)

►Oracle specifické

► Informix specifické

►Pokročilé techniky optimalizace

►Závěr

►Otázky + diskuze

Page 21: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Pokročilé techniky

Page 22: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Pokročilé techniky►Cluster tabulky

►Tabulky v DB cache

►Paralelní dotazy

►Velikost bloku

►Speciální tabulky

►Speciální indexy

►GO_FASTER

►…

Page 23: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Závěr►Oracle a Informix mají svá specifika

►Performance profiling v Jave je OK, ale …

►Spousta věcí funguje analogicky

Page 24: Matlanek 2007 sql_optimalizace

www.i.cz

Vaše jistota na trhu IT

Děkuji za vaši pozornost

Jiří [email protected]+420 737 280 021

ICZ a.s.Divize Zdravotnictvíwww.i.cz


Recommended