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

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

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

Optimalizace dotazů a databázové transakce v Oracle

INDEXY JSOU GRUNT. Pavel Stěhule

Paralelní dotazy v PostgreSQL 9.6 (a 10.0)

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

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

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

Optimalizace SQL dotazů

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

Vzorové příklady SQL. Tabulka: Kniha CREATE TABLE kniha (id INTEGER, název VARCHAR(50), PRIMARY KEY (id))

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

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

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

PG 9.5 novinky ve vývoji aplikací

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

Architektury databázových

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

Tabulka fotbalové ligy

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

XMW4 / IW4 Pokročilé SELECT dotazy. Štefan Pataky

Dotazovací jazyk pro řazená data

TimescaleDB. Pavel Stěhule 2018

Databázové a informační systémy Jana Šarmanová

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

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

Použití databází na Webu

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

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

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

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

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

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

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

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

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

Operátory ROLLUP a CUBE

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

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

Databázové systémy I

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

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

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

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

Informační systémy ve zdravotnictví. 8. cvičení

Roman Dušek

Databázové systémy trocha teorie

Michal Krátký, Miroslav Beneš

1. Relační databázový model

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

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

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

6. blok část B Vnořené dotazy

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

Multi-dimensional expressions

Verzování a publikace dat na webu za pomoci PostgreSQL

SQL SQL-SELECT. Informační a znalostní systémy. Informační a znalostní systémy SQL- SELECT

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

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

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

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

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

Kapitola 4: SQL. Základní struktura

POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE

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

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

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

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

Databázové systémy. Agregace, sumarizace, vnořené dotazy. Vilém Vychodil

Informační systémy ve zdravotnictví. 10. cvičení

1. Databázové systémy (MP leden 2010)

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Informační systémy 2008/2009. Radim Farana. Obsah. Základní principy XML

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

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

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

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

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

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

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

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 injection princip a ochrana

Materializované pohledy

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

12. blok Pokročilé konstrukce SQL dotazů - část II

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

Kdy použít WordPress a kdy zvolit jiné řešení?

Virtual Private Database (VPD) Jaroslav Kotrč

1 Webový server, instalace PHP a MySQL 13

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

MySQL. mysql> CREATE DATABASE nova CHARACTER SET latin2 COLLATE latin2_czech_cs; Query OK, 1 row affected (0.02 sec)

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

Fyzické uložení dat a indexy

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

Audit DB. Referát. Vypracoval: Zdeněk Doležal MFF UK Praha 11/5/06

Tvorba informačních systémů

Transkript:

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

Agenda Optimalizační plán dotazu Typy přístupových plánů Metody pro spojení tabulek Určení optimalizačního plánu Vyhodnocení přístupových plánů k tabulkám Určení pořadí spojení tabulek Distribuční statistiky Ovlivnění činnosti optimalizátoru Doba zpracování dotazu Příklady z praxe

Optimalizační plán dotazu Postup, který optimalizátor určil pro efektivní způsob výběru požadovaných dat Optimalizační plán dotazu (query plan) Přístupové plány (access plans) Plány pro spojení tabulek (join plans) Cílem je Redukce počtu čtení stránek z disku Eliminování operací třídění

Typy přístupových plánů Sekvenční čtení (sequence scan) Indexové čtení (index scan) Key-only indexové čtení (key-only index scan) Key-first indexové čtení (key-first index scan) Auto-index čtení (auto-index scan)

Metody pro spojení tabulek Nested-loop join Každému záznamu z první tabulky je vyhledán záznam z druhé tabulky V případě existence indexu, je použit index Hash join Vytvoření hash tabulky z jedné, obvykle menší tabulky (build) a sekvenční čtení záznamů z druhé tabulky (probe) Porovnání záznamů z druhé tabulky proti hash tabulce

Určení optimalizačního plánu Vyhodnocení přístupových plánů k tabulkám Určení pořadí spojení tabulek a metody spojení Klíčové informace jsou uloženy v distribučních statistikách

Vyhodnocení přístupových plánů k tabulkám Určení selektivity každého filtru a pořadí aplikace filtrů Rozhodnutí, zda lze použít index Filtry, ORDER BY, GROUP BY Určení nejlepšího způsobu, jak vyhledat požadovaná data v tabulce Sekvenční čtení Použití indexu

Filtr Filtry a selektivita každý jednotlivý výraz ve WHERE podmínce SQL dotazu Selektivita Odhad optimalizátoru, kolik dat bude muset být přečteno při použití určitého filtru Hodnota blízká nule velmi selektivní filtr Hodnota rovná 1 filtru odpovídají všechny záznamy Určuje se buď z distribucí nebo aplikací funkce Určuje pořadí aplikace filtrů (od nejvíce po nejméně selektivní filtry)

Určení pořadí spojení tabulek S použitím přístupových plánů a metod spojení se vyhodnotí váhy všech možných dvojic tabulek Z ekvivalentních dvojic (např. AB, BA) se vybere pouze dvojice s nižší váhou U spojení více než dvou tabulek se pokračuje vytvořím trojic, čtveřic, atd. a vybere se spojení s nejnižší váhou

Distribuční statistiky Používají se pro určení selektivity filtrů, přístupových plánů a metod spojení tabulek UPDATE STATISTICS LOW Bez distribučních statistik MEDIUM Distribuční statistiky jsou vytvořeny na základě vzorku dat HIGH Distribuční statistiky vytvořené ze všech dat

Ovlivnění činnosti optimalizátoru OPTCOMPIND Konfigurační parametr Proměnná prostředí SQL příkaz pro dynamické nastavení SET OPTIMIZATION LOW/HIGH All rows/first rows Optimalizační direktivy Možné někdy jindy...

OPTCOMPIND 0 1 - přístupový plán: index, pokud existuje - spojení tabulek: nested-loop join - nevyhodnocuje váhy!!! - úroveň izolace Repeatable Read: 0 - jiná úroveň izolace než Repeatable Read: 2 - vyhodnocuje váhy 2 - vybere optimalizační plán s nejnižší váhou - přístupový plán: index nebo sekvenční čtení - spojení tabulek: nested-loop nebo hash join ONCONFIG konfigurační parametr Proměnná prostředí: OPTCOMPIND SQL: set environment optcompind 0 1 2 default

HIGH (default) LOW SET OPTIMIZATION Vybere pouze kombinaci s nejnižší váhou v každé úrovni, ostatní možnosti již nevyhodnocuje SELECT... FROM a,b,c,d WHERE ab ac ad bc acb acd acdb

SET OPTIMIZATION LOW Doba provedení dotazu je velmi dlouhá Spojení většího počtu tabulek (>=5) Všechny join položky jsou indexované Join jedné tabulky s ostatními

SET OPTIMIZATION ALL_ROWS (default) FIRST_ROWS Dotaz je optimalizovaný tak, aby vrátil co nejrychleji první výsledky Celková doba provedení dotazu může být delší než v případě standardní optimalizace ALL_ROWS Např.: hash join může být nahrazen nested-loop joinem

Doba zpracování dotazu Tz = ceková doba zpracování dotazu To = doba optimalizace Tv = doba výběru dat To Tv To Tz Tv Tz

Příklady z praxe: případ první create table tabulka ( id1 integer, id2 smallint, kod integer,... ); create index i_tab1 on tabulka(id1,id2); create index i_tab2 on tabulka(kod); create tabulka ciselnik ( kod integer, txt char(30), ); create index i_cis1 on ciselnik(kod); create index i_cis2 on ciselnik(txt); SELECT... FROM tabulka,ciselnik, WHERE tabulka.kod=ciselnik.kod AND tabulka.id1=123456 AND ciselnik.txt= TEXT AND... Zadání: Provedení optimalizace a vysvětlení odlišnosti chování optimalizátoru pro různé hodnoty OPTCOMPIND

Příklady z praxe: případ první Estimated Cost: 50 Estimated # of Rows Returned: 2 Temporary Files Required For: Order By 1) ciselnik: INDEX PATH OPTCOMPIND=0 (1) Index Keys: txt (Serial, fragments: ALL) Lower Index Filter: ciselnik.txt = 'TEXT' 2) tabulka: INDEX PATH Filters: tabulka.id1 = 123456 (1) Index Keys: kod (Serial, fragments: ALL) Lower Index Filter: tabulka.kod = ciselnik.kod NESTED LOOP JOIN Estimated Cost: 29 Estimated # of Rows Returned: 2 Temporary Files Required For: Order By 1) ciselnik: INDEX PATH OPTCOMPIND=2 (1) Index Keys: txt (Serial, fragments: ALL) Lower Index Filter: ciselnik.txt = 'TEXT' 2) tabulka: INDEX PATH Filters: tabulka.kod = ciselnik.kod (1) Index Keys: id1 id2 (Serial, fragments: ALL) Lower Index Filter: tabulka.id1 = 123456 NESTED LOOP JOIN

Příklady z praxe: případ druhý create table tabulka (... zacatek date, konec date,... ); SELECT... FROM tabulka WHERE konec >= '07.06.2005' AND zacatek <= '07.07.2005'... Popis problému: - OPTCOMPIND=0 - Pokus 1 - indexy pro položky zacatek a konec nejsou vytvořeny - trvání dotazu je přibližně stejné bez ohledu na distribuce - K čemu jsou tedy distribuce, když nepomohou??? - Pokus 2 - indexy na položkách zacatek a konec jsou vytvořeny - distribuce jsou korektně vytvořeny - Doba provedení dotaz je nejdelší!!! - Proč indexy a distribuce tak zhoršily situaci?

Příklady z praxe: případ druhý Indexy a distribuce nejsou vytvořeny Estimated Cost: 437022 Estimated # of Rows Returned: 41877 1) poji.k_ziv: SEQUENTIAL SCAN Filters: (poji.k_ziv.datpoc <= 07.07.2005 AND poji.k_ziv.datkon >= 07.06.2005 ) Byly vytvořeny distribuce, ale bez indexů Estimated Cost: 2446748 Estimated # of Rows Returned: 368539 1) poji.k_ziv: SEQUENTIAL SCAN Filters: (poji.k_ziv.datkon >= 07.06.2005 AND poji.k_ziv.datpoc <= 07.07.2005 ) Byly vytvořeny distribuce i indexy Estimated Cost: 2494646 Estimated # of Rows Returned: 368539 1) poji.k_ziv: INDEX PATH Filters: poji.k_ziv.datkon >= 07.06.2005 (1) Index Keys: datpoc (Serial, fragments: ALL) Upper Index Filter: poji.k_ziv.datpoc <= 07.07.2005

jan_musil@cz.ibm.com