Optimalizace. 2014 Profinit. All rights reserved.

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

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

Transakce Profinit. All rights reserved.

Integrace dat Profinit. All rights reserved.

Vizualizace TIN (trojúhelníková nepravidelná síť) v Marushka Designu

Metadata Profinit. All rights reserved.

Databáze 2011/2012 T-SQL - kurzory, funkce. RNDr.David Hoksza, Ph.D.

Databáze 2011/2012. Optimalizace, základní konstrukty T-SQL RNDr.David Hoksza, Ph.D.

4 Datový typ, proměnné, literály, konstanty, výrazy, operátory, příkazy

Databáze. Optimalizace, základní konstrukty T-SQL David Hoksza

Databázové patterny Profinit. All rights reserved.

Datová kvalita Profinit. All rights reserved.

Information and Data Management Profinit. All rights reserved.

Databáze 2011/2012 SQL SELECT II. RNDr.David Hoksza, Ph.D.

Tile systém v Marushka Designu

Design databáze. MI-DSP 2013/14 RNDr. Ondřej Zýka,

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

Helios Orange Plugin Zadávání vlastností

Specifikace pro SW aplikaci Start-up business.

Možnosti připojení WMS služby do Klienta v Marushka Designu

Naxos MULTIMEDIÁLNÍ ARCHIV

Optimalizace dotazů a databázové transakce v Oracle

Témata v MarushkaDesignu

Odpisy a opravné položky pohledávek

Instalace a technické informace

Portál veřejné správy

VIS ČAK - Uživatelský manuál - OnLine semináře

Plánování směn verze 2.1, revize 03

TEORIE ZPRACOVÁNÍ DAT Cvičení 8

Sledování provedených změn v programu SAS

Případy užití RSSystems

VŠB Technická univerzita, Fakulta ekonomická. Katedra regionální a environmentální ekonomiky REGIONÁLNÍ ANALÝZA A PROGRAMOVÁNÍ.

HTML šablona v MarushkaDesignu

GLOBÁLNÍ ARCHITEKTURA ROB

Portál veřejné správy

Simulátor krizových procesů na úrovni krizového štábu. Systémová dokumentace

Generování Homepage ze serveru AReality.sk

Role metodika v procesu zavádění a ověřování standardů kvality v praxi

NÁVODNÁ STRUKTURA MÍSTNÍHO AKČNÍHO PLÁNU VZDĚLÁVÁNÍ

Vnitřní předpis města Náchoda pro zadávání veřejných zakázek malého rozsahu (mimo režim zákona č. 137/2006 Sb., o veřejných zakázkách)

Eda. Evidence obchodních aktivit. Proces nákupu

Dimenzionální modelování Profinit. All rights reserved.

ANALÝZA KVALITY VYHLEDÁVÁNÍ Zvýšení přesnosti pomocí Hodnocení vyhledávače a Prediktivní analýzy

16. Kategorizace SW chyb, kritéria korektnosti a použitelnosti, spolehlivost SW

Prováděcí předpisy pro soutěžní lezení pro rok 2014

Teradata basic Profinit. All rights reserved.

Databáze 2011/2012. Logický model DB. RNDr.David Hoksza, Ph.D.

Základní škola Valašské Meziříčí, Vyhlídka 380, okres Vsetín, příspěvková organizace

65 51 H/01 Kuchař číšník. Téma "2012_SOP_ kuchař, číšník" samostatná odborná práce

Změkčovače vody. Testry. Náplně (pryskyřice, sůl) Jednokohoutové Dvoukohoutové Automatické ,

Vedení projektů, Odhadování, historie. Jiří Mach

Dotaz typu Common Info v MarushkaDesignu

Provozní řád služby zálohování CIT

- Aplikace je napsána v C#.NET, je instalována na webovém serveru - Data jsou ukládána v databázi MS-SQL 2005 a vyšší

Databázové systémy I. - II. 2009/2010

PEXESO UŽIVATELSKÝ MANUÁL

Přednášky Teorie řízení Tereza Sieberová, 2015 LS 2014/2015

Práce s WKT řetězci v MarushkaDesignu

ONLINESKLAD.CZ. Vysvětlení pojmů: V tomto manuálu i v celém systému figurují 3 základní osoby: Popis administračního rozhraní

Legenda v MarushkaDesignu

Řízení kvality, kontroling, rizika. Branislav Lacko Martina Polčáková. Kateřina Hrazdilová Bočková - konzultantka

Spisová služba/elisa - Dodatek k manuálu - subverze 1.28

Změny detekované monitorem služeb na OPM 1. Konec SZ Vybere ta OPM, která v intervalu <aktuální den, D>:

Studijní předmět: Základy teorie pravděpodobnosti a matematická statistika Ročník:

Requirements Engineering

Eda. Evidence obchodních aktivit. Proces prodejních kontraktů

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

Organizační řád Občanského sdružení NHfree.net

EXTRAKT z mezinárodní normy

[AVG-WEB] Zpř í stupně ní kořpořá tní ho wěbu Semestrální práce z předmětu A4M39NUR

IPS1 zápočtový test na fei-learnu

Mimořádná účetní uzávěrka

Program prevence nehod a bezpečnosti letů

Bohužel nejste jediní. Jak se v této džungli orientovat a jaké jsou možnosti při prodeji nemovitosti se dozvíte na následujících stránkách.

DOTAZNÍK ZKUŠENOSTI ČESKÝCH PŘÍJEMCŮ S METODAMI PRO URČOVÁNÍ A VYKAZOVÁNÍ NEPŘÍMÝCH NÁKLADŮ V PROJEKTECH

5. Zobrazení stručné informace o právě běžícím programu. 6. Zobrazení podrobné informace o právě běžícím programu

Portál veřejné správy

ZŠ ÚnO, Bratří Čapků 1332

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

Jak zavést systém managementu kvality

ZŠ ÚnO, Bratří Čapků 1332

Bezkontaktní platby v českém obchodě

DODATEČNÉ INFORMACE K ZADÁVACÍM PODMÍNKÁM Č. III ZE DNE

Použití : Tvoří součást pohybového ústrojí strojů a zařízení nebo mechanických převodů.

Vykreslení obrázku z databázového sloupce na referenční bod geometrie

Mobilní zpravodajská aplikace idnes. A7B39PDA - Principy tvorby mobilních aplikací

Realtime prostředí a telco. Jakub Reschke Praha,

Upomínky a kontroly E S O 9 i n t e r n a t i o n a l a. s.

Příjmy a výdeje E S O 9 i n t e r n a t i o n a l a. s.

ZÁKLADNÍ INFORMACE O SPOLEČNÉ ČÁSTI MATURITNÍ ZKOUŠKY

Maturitní prací student osvědčuje svou schopnost samostatně pracovat na projektech a aktivně využívat nabyté zkušenosti

Selenium, Emma, Checkstyle. Jiří Mach

Vkládání dat do databázové aplikace

Design databáze. NDBI /14 RNDr. Ondřej Zýka,

ZŠ ÚnO, Bratří Čapků 1332

Výsledky sledování indikátoru ECI/TIMUR A.3: Mobilita a místní přeprava cestujících V Praze - Libuši

Pozn.: v číselníku je často obsaženo více možností k výběru, ale pro program Interreg V-A ČR-Polsko jsou relevantní pouze možnosti výběru zde uvedené.

F O R M Á L N Í P O Ž AD AV K Y N A B AK AL ÁŘSKÉ PRÁCE

Databáze 2011/2012 Konceptuální model DB. RNDr. David Hoksza, Ph.D.

Zadávací dokumentace Stránka 1 z 8

Transkript:

Optimalizace Ing. Marek Sušický RNDr. Ondřej Zýka marek.susicky@prfinit.eu ndrej.zyka@prfinit.eu 2014 Prfinit. All rights reserved.

Obsah Úvd Indexy Optimalizátr Jiny Bulk perace Pekl jménem ORM (Object-relatinal mapping) 2014 Prfinit. All rights reserved. 2

1 Úvd 2014 Prfinit. All rights reserved.

Optimalizace Dvě pravidla ptimalizace: pravidl č. 1: Nedělejte ji. pravidl č. 2: Zatím ji nedělejte. Tím není myšlen že nemáte ptimalizvat, ale abyste nedělali premature ptimizatin (předčasnu ptimalizaci), v jejímž jméně se páchají různá zvěrstva bez skutečné ptřeby (řešící neexistující prblém) Primárně prgramujte (vytvřte DB schéma, napište PL/SQL kód) tak aby dával lgický smysl a aby vracel správné výsledky Až pkud máte dzkušen že v daném prcesu je výknnstní prblém, teprve pak přistupte k ptimalizaci a řešte h 2014 Prfinit. All rights reserved. 4

Optimalizace ladění prcesu se bude velmi lišit pdle th c vlastně máte výknem na mysli prpustnst cílem je maximální rychlst zpracvání všech dat latence cílem je minimální latence jedntlivých pžadavků škálvatelnst cílem je prces napsat tak aby dbře fungval i při navýšení mnžství vstupních dat / sučasně pracujících uživatelů apd. čast se zapmíná že neplatí rvnst mezi vysku prpustnstí a nízku latencí (při vyské prpustnsti se čast stává že latence zpracvání některých pžadavků dsahuje neakceptvaných hdnt ) v pdstatě záleží na tm jestli ladíte interaktivní neb batch prces, batch prcesy se ladí na celkvu prpustnst, interaktivní na nízku latenci 2014 Prfinit. All rights reserved. 5

Brzdy výknu pmalé SQL dtazy (tradičně) algritmické brzdy spusta maličkých dtazů (ruční jinvání, kntext switche) zbytečné změny dat 2014 Prfinit. All rights reserved. 6

Základní dpručení načítejte data zjinvaná namíst ručníh jinvání nechte t na DB (určitě t nedkážete lépe) prvádějte minimum zápisů sesbírejte si změny z celéh (vhdně setříděnéh) batche šetří úpravy indexů, zápisy d und/red pužívejte BULK perace (viz. dále 2014 Prfinit. All rights reserved. 7

Základní dpručení rzdrbení na maličké selecty je čast důsledkem naivníh přepisu business prcesu d PL/SQL pdby, např. načtěte infrmace transakci načtěte infrmace pbčce na které byla transakce zadána načtěte infrmace zákazníkvi na jehž účtu byla transakce prvedena může být realizván pmcí jednh SQL dtazu a neb pmcí tří SQL každý SQL příkaz má určitu režii a t i když se jedná sft-parse ( hardparse ani nemluvě. tam je t ještě hrší) databáze má jinvání pladěné, dkáže h ptimalizvat pmcí vhdnéh algritmu (v závislsti na mnžství dat zvlí nested lp, merge jin, hash jin apd.) jedntlivé SQL čast skluznu na hrmadu index scanů, které jsu pměrně nákladné kvůli randm I/O peracím, a ve výsledku je ruční jin výrazně hrší než skutečný jin 2014 Prfinit. All rights reserved. 8

Příklad špatně: načítání dat pmcí malých selectů FOR t IN (SELECT * FROM transakce) LOOP FOR u IN (SELECT * FROM ucet WHERE id = t.ucet_id) LOOP -- nejake zpracvani END LOOP; END LOOP; dbře: načítání dat v jednm jinu FOR x IN (SELECT * FROM transakce t JOIN ucet u ON (t.ucet_id = u.id)) LOOP -- nejake zpracvani END LOOP; 2014 Prfinit. All rights reserved. 9

špatně: zpracvání batche s update pr každý záznam FOR t IN (SELECT ucet_id, vyse FROM transakce) LOOP UPDATE ucet SET aktualni_stav = aktualni_stav + vyse WHERE id = t.ucet_id; END LOOP; dbře: knslidace zápisů FOR t IN (SELECT ucet_id, SUM(vyse) AS vyse FROM transakce GROUP BY ucet_id) LOOP UPDATE ucet SET aktualni_stav = aktualni_stav + vyse WHERE id = t.ucet_id; END LOOP; 2014 Prfinit. All rights reserved. 10

2 Indexy 2014 Prfinit. All rights reserved.

Typy indexů Typ indexu B-tree index Hash index Bitmap index GIST index Fulltext index Pužití <, =, > (interval hdnt) Existence Pčet hdnt, prvek mnžiny Umžňuje definvat vlastní vyhledávací predikátry (pr multidimenzinální kstky ) Textvé zpracvání Lkální a glbální indexy Struktury pr in-memry databáze Speciální datvé struktury (grafvé databáze) 2014 Prfinit. All rights reserved. 12

Indexy Kdy řešit definici a pužití indexů Jak se chvá null v indexu? Jaký je rzdíl mezi ASC a DESC? Datumy v indexech Záleží na přadí ve slžených indexech? Víc indexů = rychlejší databáze 2014 Prfinit. All rights reserved. 13

Indexy Přidávání a rušení indexů Nejčastěji prváděná úprava na straně vývjářů i administrátrů Přidání indexu zamyká tabulku dpad na prvz Mnh indexů zpmaluji změny v datech Indexy zabírají diskvý prstr Přegenervání stávajících indexů a přepčet statistik je sučást standardní administrace serveru vyžaduje čas Přidávání a rušení indexů Je jednduché zjistit, že se index v knkrétním příkazu pužívá Nedá se zjistit, v kterých příkazech se index pužívá definuje ptimalizátr Dá se zjistit, že se index někdy pužívá Dá se zjistit, které indexy by byly vhdné pr knkrétní příkaz přidat Nedá se zjistit, které indexy by šl vyhdit Nezapmenut na pkrývající indexy 2014 Prfinit. All rights reserved. 14

2 Optimalizátr 2014 Prfinit. All rights reserved.

Optimalizace Pr SQL dtaz ptimalizátr dhadne nejvhdnější exekuční plán Využití statistik stará statistika může i něklikařádvě zhršit výkn Módy ptimalizace Nejkratší čas dpvědi Největší průtk dat (default) Optimalizace pužívá statistiku Zastaralá statistika může výkn aplikace velice negativně vlivnit Optimalizaci lze vlivnit pužíváním tipů (Hint) NP-úplný prblém 2014 Prfinit. All rights reserved. 16

Optimalizátr Rzdělení dtazu d krků Vlba metdy přístupu k tabulkám Vlba přadí přístupu k tabulkám 2014 Prfinit. All rights reserved. 17

Exekuční plán Zbrazení exekučníh plánu Tabulka PLAN_TABLE Dynamický phled V$SQL_PLAN SQL analyzátr v Enterprise Manageru EXPLAIN PLAN statement Zálžka Executin plan v SQL Develperu SET AUTOTRACE ON SELECT * frm emplyee; EXPLAIN PLAN FOR SELECT * FROM emplyee; SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY()); 2014 Prfinit. All rights reserved. 18

Optimalizace Nejkratší čas dpvědi Prvedení dtazu tak, aby byl prvních n řádků nalezen nejrychleji Vhdné pr interaktivní aplikace Největší průtk dat Default mód pr Oracle Prvedení dtazu tak, aby byl celkvý výsledek získán s minimem zdrjů Vhdné pr aplikace v batch módu 2014 Prfinit. All rights reserved. 19

Optimalizace Metdu lze zvlit inicializačním parametrem Pr instance Čas dpvědi Init parameter: OPTIMIZER_MODE = first_rws_n ALTER SYSTEM SET OPTIMIZER_MODE = first_rws_n Průtk dat Init parameter: OPTIMIZER_MODE = all_rws ALTER SYSTEM SET OPTIMIZER_MODE = all_rws Pr sessin Čas dpvědi ALTER SESSION SET OPTIMIZER_MODE = first_rws_n Průtk dat ALTER SESSION SET OPTIMIZER_MODE = all_rws n pr first_rws_n může být 1, 10, 100 neb 1000 2014 Prfinit. All rights reserved. 20

Statistiky Pužívá ptimalizátr pr dhad nejlepšíh plánu Příklady statistik Tabulky (pčet řádku, pčet blků, průměrná délka řádku) Slupce: pčet různých hdnt, pčet NULL, histgram Indexy: Stránky, úrvně, cluster faktr Statistiky se neupravují ihned v rámci transakcí Přepčítávají se dávkvě v rámci administrace V pravidelných intervalech Manuálně p změněn dat ORACLE - PL/SQL package DBMS_STATS MS SQL příkaz update statistics 2014 Prfinit. All rights reserved. 21

Hinty Hint se zapisuje inline příkazů Pužívat jen v důvdněných případech Se změnu dat se může stát, že dtaz začne být extrémně neefektivní Kategrie hintů Cíl ptimalizace Metda přístupu Transfrmace dtazu Přadí jinů Způsb jinů Paralelní prvedení Další Executin plan Přesný ppis výpčtu Mžn přidělit k danému příkazu 2014 Prfinit. All rights reserved. 22

Prfiling Analýza chvání běhu aplikací Na úrvni celéh datvéh serveru Na úrvni jedntlivých příkazů Oracle - AWR reprt Funguje puze pr named library units Infrmace se sbírají na úrvni PL/SQL VM Sybase sp_sysmn prcedura 2014 Prfinit. All rights reserved. 23

2 Jin 2014 Prfinit. All rights reserved.

JOIN Typy jinů Nested lps Hash JOIN Merge JOIN Přadí jinvání ptimalizátr sám řeší přadí jinů n! mžnstí pr n tabulek Bere v úvahu velikst tabulek pčet kvalifikvaných slupců (selektivitu where pdmínek) existenci indexů existence statistik na jin slupcích (histgramy) přesnější dhad Strukturu tabulek (Index Organized Tables/Clustered index) Partitining tabulek (mžnsti paralelizace výpčtu) 2014 Prfinit. All rights reserved. 25

2 Bulk perace (Oracle) 2014 Prfinit. All rights reserved.

náhrada FOR smyček s DML peracemi jeden DML příkaz pr FORALL (jeden rzšířený příkaz) pužívá bind array ze kteréh se načítají hdnty libvlná klekce (ale indexvaná celým číslem) indexvané sekvenčně (lze bejít přes INDICES OF / VALUES OF) výsledky (pčet mdifikvaných řádek) tradiční cursr attributes SQL%ROWCOUNT celkvý pčet (nesplehlivé s LOG ERRORS) SQL%BULK_ROWCOUNT pčet pr každý příkaz 2014 Prfinit. All rights reserved. 27

Bulk perace - shrnutí asi nejzásadnější vlastnst týkající se výknu něc za něc : vyšší slžitst za vyšší výkn nvější verze autmatizují (10g cursr fr lps ) pzr na paměť - data se ukládají d PGA 2014 Prfinit. All rights reserved. 28

Bulk perace zpracvání velkéh pčtu řádek prblém s přepínáním kntextu (SQL PL/SQL) řešení seskupit načítání a zápisy dat zalžen na klekcích FORALL mdifikace dat (INSERT, UPDATE, DELETE, MERGE) zápis dat z klekcí d databáze BULK COLLECT načítání dat z tabulek d klekcí implicitní i explicitní dtazy 2014 Prfinit. All rights reserved. 29

Příklad - tradiční DECLARE TYPE data_t IS TABLE OF mje_tabulka%rowtype; v_data data_t := data_t(); BEGIN END; FOR v_rec IN (SELECT * FROM mje_tabulka) LOOP v_data.extend; v_data(v_data.last) := v_rec; END LOOP; 2014 Prfinit. All rights reserved. 30

Příklad - BULK DECLARE TYPE data_t IS TABLE OF mje_tabulka%rowtype; v_data data_t := data_t(); BEGIN END; SELECT * BULK COLLECT INTO v_data FROM mje_tabulka; 2014 Prfinit. All rights reserved. 31

Bulk cllect pr dtazy i kurzry : INTO => BULK COLLECT INTO klekce se vždy plní sekvenčně d hdnty 1 nevyhazuje výjimku NO_DATA_FOUND znáte max. pčet záznamů => varray LIMIT neb velikst tabulky pkud velikst nestačí, tak výjimka jinak nested table neb index-by table ptimální velikst LIMIT závisí na situaci mnžství paměti, pčet prcesů,... 2014 Prfinit. All rights reserved. 32

nelze pužít %NOTFOUND hned p fetchi přesunut %NOTFOUND na knec smyčky p fetchi spčítat elementy v klekci (0 => knec) na knci spčítat elementy v klekci (< limit => knec) kdy převést tradiční fetch na BULK COLLECT před 10g vždy (včetně cursr fr lps ) d 10g není třeba převádět cursr fr lps pkud nebsahují DML perace běží dstatečně rychle 2014 Prfinit. All rights reserved. 33

Příklad - tradiční DECLARE TYPE data_t IS TABLE OF mje_tabulka%rowtype; v_data data_t := data_t(); BEGIN v_data.extend(10); v_data(1).id := 1; v_data(1).hdnta := 'a'; /* atd pr další hdnty */ FOR idx IN v_data.first.. v_data.last LOOP UPDATE mje_tabulka SET hdnta = v_data(idx).hdnta WHERE id = v_data(idx).id; END LOOP; END; 2014 Prfinit. All rights reserved. 34

Příklad - FORALL DECLARE TYPE data_t IS TABLE OF mje_tabulka%rowtype; v_data data_t := data_t(); BEGIN v_data.extend(10); v_data(1).id := 1; v_data(1).hdnta := 'a'; /* atd pr další hdnty */ END; FORALL idx IN v_data.first.. v_data.last UPDATE mje_tabulka SET hdnta = v_data(idx).hdnta WHERE id = v_data(idx).id; 2014 Prfinit. All rights reserved. 35

8 ORM 2014 Prfinit. All rights reserved.

ORM Autmatický převd mezi bjektvým mdelem v aplikaci a relačním mdelem v databázi. Řeší jak strukturu tak manipulaci s daty Pžadavek becnsti řešení vynucuje pužití becných patternů pr struktury a algritmy nízká efektivita. ORM není schpn pužít znalst kntextu. Čast prt nutné bcházet z důvdů ptimalizace. Prgramátr musí znát kntext a zárveň vědět jak ORM interně pracuje, jaký dpad bude mít změna parametrů. Kód píší vývjáři aplikace bez hlubší znalsti relačních databází. 2014 Prfinit. All rights reserved. 37

2014 Prfinit. All rights reserved. Diskuse