Optimalizace dotazů a databázové transakce v Oracle



Podobné dokumenty
2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

8. Zpracování dotazu. J. Zendulka: Databázové systémy 8 Zpracování dotazu 1

J. Zendulka: Databázové systémy 8 Zpracování dotazu Podstata optimalizace zpracování dotazu

RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Tabulka fotbalové ligy

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Transakce a zamykání. Administrace MS SQL Serveru (NDBI039) Pavel Hryzlík

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Jazyk SQL 3 - DML, DDL, TCL, DCL

4IT218 Databáze. 4IT218 Databáze

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Jazyk SQL databáze SQLite. připravil ing. petr polách

Čteme EXPLAIN. CSPUG, Praha. Tomáš Vondra Czech and Slovak PostgreSQL Users Group

Optimalizace SQL dotazů

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

Databázové systémy. Cvičení 6: SQL

Materializované pohledy

IDS optimalizátor. Ing. Jan Musil, IBM ČR Community of Practice for

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Přehled systému Microsoft SQL Server. Komu je kniha určena Struktura knihy Nejvhodnější výchozí bod pro čtení knihy Konvence a struktura knihy

Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013

Databázové a informační systémy

Databáze I. 5. přednáška. Helena Palovská

6. SQL složitější dotazy, QBE

PG 9.5 novinky ve vývoji aplikací

Databázové systémy úvod

INDEXY JSOU GRUNT. Pavel Stěhule

Marian Kamenický. Syntea software group a.s. marian.kamenicky. MFFUK Praha 2012/13

Novinky v PostgreSQL 9.4. Tomáš Vondra, 2ndQuadrant

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL)

Databázové systémy a SQL

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

První pomoc pro DBA. administrátory CIDUG. Milan Rafaj IBM Česká republika

Paralelní dotazy v PostgreSQL 9.6 (a 10.0)

Databáze SQL SELECT. David Hoksza

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

Optimalizace. Ing. Marek Sušický, RNDr. Ondřej Zýka

Text úlohy. Systémový katalog (DICTIONARY):

O Apache Derby detailněji. Hynek Mlnařík

Univerzita Pardubice Fakulta ekonomicko-správní. Hinty Oracle a jejich vliv na výkon dotazu. Bc. Josef Pirkl

Databáze II. 2. přednáška. Helena Palovská

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Semináˇr Java X JDBC Semináˇr Java X p.1/25

Deklarativní IO shrnutí minulé přednášky

KIV/ZIS cvičení 6. Tomáš Potužák

Databázové systémy, MS Access. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1130_Databázové systémy, MS Access_PWP

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný

Databáze I. Přednáška 4

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Databázové systémy Cvičení 5.2

Databáze II. 1. přednáška. Helena Palovská

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague

1. Relační databázový model

Zápisování dat do databáze

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

- sloupcové integritní omezení

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např.

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

PostgreSQL. Podpora dědičnosti Rozšiřitelnost vlastní datové typy. Univerzální nasazení ve vědecké sféře

Databáze v praxi. RNDr. Ondřej Zýka Principal Consultant

Administrace Oracle - Správa zdrojů

Architektura DBMS. RNDr. Ondřej Zýka

Zálohování a obnova databáze. Kryštof Měkuta

B Organizace databáze na fyzické úrovni u serveru Oracle

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Databázové systémy trocha teorie

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

Databázové systémy I

Databázové systémy I. 7. Přednáška

Optimalizace plnění a aktualizace velkých tabulek. Milan Rafaj, IBM

UNIVERZITA PALACKÉHO V OLOMOUCI

9. Transakční zpracování

Úvod do databázových systémů

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

Administrace, Monitoring. Pavel Stěhule P2D2, Praha 2016

Dotazy v SQL. Výraz relační algebry R1( )[A1,A2,...,Aj] lze zapsat takto: SELECT A1,A2,...,Aj FROM R1 WHERE. Výraz (R1, R2... Rk)( )[A1,A2,...

Řešení úkolů. Cvičení 1. Založení tabulky se specifikací fyzického uložení. Úkol 1.1

TimescaleDB. Pavel Stěhule 2018

Healtcheck. databáze ORCL běžící na serveru db.tomas-solar.com pro

Kapitola 4: SQL. Základní struktura

8.2 Používání a tvorba databází

04 - Databázové systémy

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Optimalizace serveru

ÚVOD DO DATABÁZÍ. Metodické listy pro předmět

Optimalizace. Ing. Marek Sušický, RNDr. Ondřej Zýka

Sada 1 - PHP. 14. Úvod do jazyka SQL

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

Datové sklady Cvičení 1

Fakulta elektrotechniky a informatiky Databázové systémy 2. Leden 2010 souhrn. Červené dobře (nejspíš), modré možná

FAKULTA STAVEBNÍ STUDIJNÍ PROGRAM: GEODÉZIE A KARTOGRAFIE TYP PROGRAMU: MAGISTERSKÝ STUDIJNÍ OBOR: GEOMATIKA ÚVOD DO ZPRACOVÁNÍ PROSTOROVÝCH DAT

Administrace Oracle. Práva a role, audit

MySQL sežere vaše data

Transkript:

Optimalizace dotazů a databázové transakce v Oracle Marek Rychlý Vysoké učení technické v Brně Fakulta informačních technologií Ústav informačních systémů Demo-cvičení pro IDS 22. dubna 2015 Marek Rychlý Optimalizace dotazů a databázové transakce v Oracle Demo-cvičení pro IDS, 22. dubna 2015 1 / 24

Obsah 1 Optimalizace plánů vykonávání 2 Materializovaný pohled Vytvoření materializovaného pohledu Použití materializovaného pohledu 3 ACID a ovládáná databázové transakce Zamykání databázových objektů Optimalizace práce s databází bez změny dotazů Marek Rychlý Optimalizace dotazů a databázové transakce v Oracle Demo-cvičení pro IDS, 22. dubna 2015 2 / 24

(Execution Plan) SQL DML dotaz je po přijetí db. serverem zpracován a proveden. Zpracování zahrnuje parsování, analýzu a přiřazení zdrojům dat. Analýza zahrnuje tvorbu plánů vykonávání a výběr nejlepšího. Plány vykonávání jsou sestaveny na základě: způsobu použití tabulek a jejich sloupců (projekce, druhy spojení tabulek, predikáty, agregace, řazení, atd.) existujících indexů (zvažuje se také typ a smysluplnost použítí indexů, nejen jejich existence) přítomnosti tzv. hints v dotazu (tvůrce dotazu pomocí nich přikazuje, jak se dotaz má provést) minulých úspěšných plánů provedení podobných dotazů (plány jsou nějakou dobu uloženy v cache) statistik nad existujícími daty v databázi i provedenými dotazy (počet dat v tabulce, počet různých hodnot ve sloupci tabulky, atd.) Marek Rychlý Optimalizace dotazů a databázové transakce v Oracle Demo-cvičení pro IDS, 22. dubna 2015 4 / 24

Zapojení optimalizátoru vykonávání dotazů (diagram převzat z Database SQL Tuning Guide, Oracle Database Online Documentation 12cR1) Marek Rychlý Optimalizace dotazů a databázové transakce v Oracle Demo-cvičení pro IDS, 22. dubna 2015 5 / 24

Komponenty optimalizátoru vykonávání dotazů (diagram převzat z Database SQL Tuning Guide, Oracle Database Online Documentation 12cR1) Marek Rychlý Optimalizace dotazů a databázové transakce v Oracle Demo-cvičení pro IDS, 22. dubna 2015 6 / 24

Transformace dotazů před generováním plánů vykonávání je dotaz transformován transformace rozdělí dotaz na několik poddotazů (příklad vlevo s rozdělením podle OR) (diagram převzat z Database SQL Tuning Guide, Oracle Database transformace může také nahradit dotaz či jeho část (použité tabulky) dotazem na materializováný pohled (pokud existuje takový pohled a je to povoleno) Online Documentation 12cR1) Marek Rychlý Optimalizace dotazů a databázové transakce v Oracle Demo-cvičení pro IDS, 22. dubna 2015 7 / 24

Odhad ceny vykonávání dotazů ohodnocení pro následný výběr nejlepšího plánu odhad ceny vychází z následujících údajů selectivity procento ze všech řádků dotaz či jeho část vybírá cardinality počet řádků dotaz či jeho část zpracovává cost použití I/O, CPU a paměti dotazem či jeho části (diagram převzat z Database SQL Tuning Guide, Oracle Database Online Documentation 12cR1) Marek Rychlý Optimalizace dotazů a databázové transakce v Oracle Demo-cvičení pro IDS, 22. dubna 2015 8 / 24

Generování a výběr nejlepšího plánu vykonávání 1 výběr přístupové cesty k datům 2 výběr metody spojení tabulek 3 výběr pořadí spojení tabulek (diagram převzat z Database SQL Tuning Guide, Oracle Database Online Documentation 12cR1) Marek Rychlý Optimalizace dotazů a databázové transakce v Oracle Demo-cvičení pro IDS, 22. dubna 2015 9 / 24

Přístupová cesta v plánu vykonávání (Access Path) přímý přístup k tabulkám (Heap-Organized Tables) Full Table Scans procházení bez smysluplně použitelného indexu Table Access by Rowid dohledání po průchodu indexem Sample Table Scans výběr procentního vzorku z tabulky přístup k tabulkám přes B-strom (B-Tree Index Access) Index Unique Scans rovnost na sloupci s jedinečnými hodnotami Index Range Scans test rozsahu či rovnost v sloupci s dupl. hod. Index Full Scans výpis hodnot z indexovaných sloupců Index Fast Full Scans výpis hodnot pouze ze sloupců indexu Index Skip Scans dotazování pouze části složeného indexu Index Join Scans výpis hodnot pouze z sloupců indexů přístup k tabulkám přes bitmapový index (Bitmap Indexes) Bitmap Index Single Value rovnost na indexovaném sloupci Bitmap Index Range Scans test rozsahu na indexovaném sloupci Bitmap Merge použití několika bitmapových indexů přístup ke clusterům tabulek (Table Clusters) (Cluster Scans, Hash Scans) Marek Rychlý Optimalizace dotazů a databázové transakce v Oracle Demo-cvičení pro IDS, 22. dubna 2015 10 / 24

Metoda spojení v plánu vykonávání (Join Method) Nested Loops Joins prohledávání spojovaných tabulek ve vnořených cyklech (tj. každý rádek první tabulky se porovná se všemi řádky druhé tabulky, atd.) Hash Joins párování záznamů spojovaných tabulek přes hash klíče spojení (tj. spočítají se hash pro sloupec klíče spojení v každém řádku menší tabulky a pak se prochází větší tabulka a pro každý její řádek se spočítá opět hash klíče spojení, pomocí kterého se nalezne odpovídající řádek první tabulky, který má stejný hash) Sort Merge Joins párování seřazených záznamů spojovaných tabulek (tj. záznamy spojovaných tabulek jsou seřazeny dle sloupců klíče spojení a prochází se souběžně a párují se záznamy shodných hodnot klíče spojení) Cartesian Joins výpis všech záznamy spojovaných tabulek ve vnořených cyklech (bez klíče spojení; tj. každý rádek 1. tabulky se spojí se všemi řádky 2. tabulky) Marek Rychlý Optimalizace dotazů a databázové transakce v Oracle Demo-cvičení pro IDS, 22. dubna 2015 11 / 24

Použití EXPLAIN PLAN... EXPLAIN PLAN neprovede dotaz, pouze vyvolá optimalizátor (průběžné sledování výsledků optimalizace provedených dotazů se provádí jinak) vysvětlení dotazu není zobrazeno, ale je uloženo do sys. tabulky (implicitně se výsledky ukládají do tabuly plan_table ) vysvětlené dotazy lze získat tabulky s různou podrobností ( basic pro výsledky optimalizátotoru, typical vč. odhadu ceny, all pro vše) EXPLAIN PLAN FOR SET STATEMENT_ID myexplainedquery SELECT prod_category, avg(amount_sold) FROM sales s, products p WHERE p.prod_id = s.prod_id GROUP BY prod_category; SELECT plan_table_output FROM table(dbms_xplan.display( plan_table, myexplainedquery, typical )); -- output: -- ----------------------------------------------------------------- -- Id Operation Name Rows Cost (%CPU) Time -- ----------------------------------------------------------------- --.................. Marek Rychlý Optimalizace dotazů a databázové transakce v Oracle Demo-cvičení pro IDS, 22. dubna 2015 12 / 24

Příklad použití EXPLAIN PLAN drop table mark; drop table student; create table student(stdid int primary key, year int); create table mark(stdid REFERENCES student(stdid), subj char(3), mark char(1), primary key (stdid,subj)); create index mark_mark on mark(mark); insert all into student values (1, 2) into student values (2, 3) into mark values (1, IDS, A ) into mark values (1, PDB, B ) into mark values (2, IDS, E ) into mark values (2, PDB, F ) select * from dual; explain plan for select * from student natural join mark; select plan_table_output from table(dbms_xplan.display()); /* ^ HASH JOIN, 2x TABLE ACCESS FULL */ explain plan for select stdid,subj from student natural join mark; select plan_table_output from table(dbms_xplan.display()); /* ^ NO JOIN, 1x INDEX FAST FULL SCAN */ explain plan for select * from student natural join mark where mark!= F ; select plan_table_output from table(dbms_xplan.display()); /* ^ NESTED LOOPS, INDEX UNIQUE SCAN & TABLE ACCESS FULL */ explain plan for select /*+ INDEX(mark mark_mark) */ * from student natural join mark where mark!= F ; select plan_table_output from table(dbms_xplan.display()); /* ^ NESTED LOOPS, INDEX UNIQUE SCAN & INDEX FULL SCAN */ Marek Rychlý Optimalizace dotazů a databázové transakce v Oracle Demo-cvičení pro IDS, 22. dubna 2015 13 / 24

Optimalizátor lze ovlivnit pomocí HINTs optimalizátor může zvolit nejjednodušší plán, nikoliv nejsprávnější (např. při nízkém počtu záznamů prochází tabulky pomocí TABLE ACCESS FULL) optimalizaci dotazu je možno upřesnit pomocí HINTs (např. zvolit konkrétní index či metodu spojení; vizte odkaz na seznam HINTs) (diagram převzat z Database SQL Tuning Guide, Oracle Database Online Documentation 12cR1) Marek Rychlý Optimalizace dotazů a databázové transakce v Oracle Demo-cvičení pro IDS, 22. dubna 2015 14 / 24

Materializovaný pohled Materializovaný pohled Vytvoření materializovaného pohledu Použití materializovaného pohledu uchovává výsledek dotazu, který vychází z jiných pohledů a z tabulek (na rozdíl od běžného pohledu, který pouze provádí daný dotaz; tabulky v dotazu v mat. pohledu se nazývají master tabulky a jejich db. je master databáze) lze nastavit vlastnosti materializovaného pohledu: LOGGING db. zaznamenává operace s pohledem (v místním redo-logu; je-li potřeba, přehrává se, např. při chybě či zrcadlení) CACHE db. postupně optimalizuje čtení z pohledu (čtené bloky umíst ovány na začátek cache, kde jsou příště hned dostupné) REFRESH FAST db. aktualizuje pohled dle logů master tabulek (přehrávání redo-logu je rychlejší, než provádění celého dotazu pohledu) ON COMMIT db. aktualizuje pohled po commitu master tabulek (zaručuje automatickou aktualizaci dat v pohledu; opak je ON DEMAND) BUILD IMMEDIATE db. naplní pohled ihned po jeho vytvoření (v opačném případě se mat. pohled naplní až příštím REFRESH) ENABLE QUERY REWRITE bude používán optimalizátorem (mat. pohled bude použit pro optimalizaci přesně stejného dotazu) FOR UPDATE db. aktualizuje umožňuje změnu dat v pohledu (musí mít také nastaveno WITH PRIMARY KEY nebo WITH ROWID) Marek Rychlý Optimalizace dotazů a databázové transakce v Oracle Demo-cvičení pro IDS, 22. dubna 2015 16 / 24

Materializovaný pohled Vytvoření materializovaného pohledu Použití materializovaného pohledu Příklad definice materializovaného pohledu create table student(stdid int primary key, year int); create table mark(stdid REFERENCES student(stdid), subj char(3), mark char(1), primary key (stdid,subj)); -- create rowid master tables logs for fast refresh materialized view create materialized view log on student with rowid; create materialized view log on mark with rowid; -- create fast refresh materialized view from join of master tables create materialized view student_mark nologging cache build immediate refresh fast on commit enable query rewrite as select stdid, student.year, mark.subj, mark.mark, student.rowid as sudent_rowid, mark.rowid as mark_rowid from student natural join mark; Marek Rychlý Optimalizace dotazů a databázové transakce v Oracle Demo-cvičení pro IDS, 22. dubna 2015 17 / 24

Materializovaný pohled Vytvoření materializovaného pohledu Použití materializovaného pohledu Příklad použití materializovaného pohledu explain plan for SELECT * FROM student NATURAL JOIN mark; select plan_table_output from table(dbms_xplan.display(null,null, basic )); -- -------------------------------------- -- Id Operation Name -- -------------------------------------- -- 0 SELECT STATEMENT -- 1 HASH JOIN -- 2 TABLE ACCESS FULL STUDENT -- 3 TABLE ACCESS FULL MARK -- -------------------------------------- alter session set query_rewrite_enabled = true; explain plan for SELECT stdid, student.year, mark.subj, mark.mark, student.rowid as sudent_rowid, mark.rowid as mark_rowid FROM student NATURAL JOIN mark; select plan_table_output from table(dbms_xplan.display(null,null, basic )); -- ----------------------------------------------------- -- Id Operation Name -- ----------------------------------------------------- -- 0 SELECT STATEMENT -- 1 MAT_VIEW REWRITE ACCESS FULL STUDENT_MARK -- ----------------------------------------------------- Marek Rychlý Optimalizace dotazů a databázové transakce v Oracle Demo-cvičení pro IDS, 22. dubna 2015 18 / 24

a ACID ACID a ovládáná databázové transakce Zamykání databázových objektů Optimalizace práce s databází bez změny dotazů Atomicity Atomičnost transakcí, žádný rozpracovaný stav a to i ve vztahu k možné chybě OS či HW. (proběhne celá transakce, tj. všechny její změny, nebo nic) Consistency V DB jsou pouze platná data dle daných pravidel. Transakce se neuskuteční, pokud to nelze dodržet, jinak platí, že původní i nový stav je platný. Isolation Souběžné transakce se neovlivňují. Serializace. Pořadí však není zajištěno. Durability Uskutečněná transakce nebude ztracena (její projev). Podpora obnovy dat po pádu HW/SW. ACID netriviální, omezuje změny dat (zamykání) a přístup k datům (rychlost). Marek Rychlý Optimalizace dotazů a databázové transakce v Oracle Demo-cvičení pro IDS, 22. dubna 2015 20 / 24

Ovládání databázové transakce ACID a ovládáná databázové transakce Zamykání databázových objektů Optimalizace práce s databází bez změny dotazů transakce může obsahovat jedno z následujících 1 jeden nebo více DML SQL dotazů 2 právě jeden DDL SQL příkaz transakce začíná prvním odeslaným SQL dotazem/příkazem transakci končí jedno z následujících 1 1 libovolný DDL SQL příkaz COMMIT 2 chybné ukončení session ROLLBACK 3 správné ukončení session COMMIT (COMMIT je v tomto případě výchozí chování, lze změnit) 4 zadání COMMIT nebo ROLLBACK bez TO SAVEPOINT SAVEPOINT vytvoří místo v transakci, od kterého lze před koncem transakce odvolat pomocí ROLLBACK TO SAVEPOINT (ROLLBACK TO SAVEPOINT se odvolá vše po daném místě v transakci vč. zámků od toho místa modifikovaných objektů, ale transakci neukončí) 1 pozor na autocommit, v sqlplus: SET AUTOCOMMIT OFF Marek Rychlý Optimalizace dotazů a databázové transakce v Oracle Demo-cvičení pro IDS, 22. dubna 2015 21 / 24

Zamykání databázovou transakcí ACID a ovládáná databázové transakce Zamykání databázových objektů Optimalizace práce s databází bez změny dotazů transakce zamče upravené řádky či tabulky až do jejího konce úpravy zamčených objektů v jiné transakci jsou ihned blokovány (zámky objektů jsou výlučné, pokus zamčít již zamčené je ihned blokován) odblokování transakcí čekajících na zámek provede až ukončení transakce vlastnící zámek, nikoliv uvolnění zámku (tzn. uvolnění samotného zámku bez ukončení stransakce, např. pomocí ROLLBACK TO SAVEPOINT, nezpůsobí odblokování zablokovaných) blokované transakce čekající na již uvolněné zámky mohou předběhnout jiné dosud neblokované transakce -- tran1 -- tran2 update student set year=3; savepoint before_mark_lock; update mark set mark= F ; rollback to savepoint before_mark_lock; commit; -- ^ tran1 ends update mark set mark= E ; -- ^ blocked by tran1 -- ^ blocked by tran3 -- ^ not-blocked commit; -- tran3 update mark set mark= F ; -- ^ not-blocked commit; -- ^ tran3 ends Marek Rychlý Optimalizace dotazů a databázové transakce v Oracle Demo-cvičení pro IDS, 22. dubna 2015 22 / 24

ACID a ovládáná databázové transakce Zamykání databázových objektů Optimalizace práce s databází bez změny dotazů Optimalizace práce s databází bez změny dotazů zamykání a odemykání objektů a (od)blokování je časově náročné (zámek využijte maximálně, např. mnoho úprav jedné tabulky dělejte společně v jedné transakci, tj. na začátku vypněte autocommit a nakonci potvrd te commitem) zpracování dotazu optimalizátorem, tj. volba plánu vykonávání dotazu, před jeho samotným provedením je časově náročné (pro opakované volání dotazů předpřipravte dotaz/použjte výzané promněnné, takže se optimalizátor vyvolá pouze jednou; v JDBC pomocí PreparedStatement) sít ová komunikace s databázovým serverem je časově náročná (posílejte dotazy, které nemají odpověd, po větších skupinách; v JDBC používejte (Prepared)Statement.addBatch() a.executebatch()) (obrázky převzaty z David Krch: Rychlejší aplikace i bez změn dotazů) Marek Rychlý Optimalizace dotazů a databázové transakce v Oracle Demo-cvičení pro IDS, 22. dubna 2015 23 / 24

Shrnutí a závěr Shrnutí a závěr Často prováděné složité dotazy je nutno odladit. (zobrazit vykonávací plán, zavést indexy a mat. pohledy, případně použít hints) Materializovaný pohled obsahuje výsledky dotazu. (nastavením mat. pohledu se určí, jak se výsledky získají a použijí) Modifikace dat v transakcích vede k zamykání. (a zamykání může způsobit blokování, nutno odladit) Je nutno optimalizovat také přístup k db. serveru, nejen dotazy. (jeden commit, předpřipravené dotazy s vázanými proměnnými, odesílání dávek) Marek Rychlý Optimalizace dotazů a databázové transakce v Oracle Demo-cvičení pro IDS, 22. dubna 2015 24 / 24