Optimalizace DB v informačním systému Petr Sobotka.

Slides:



Advertisements
Podobné prezentace
OZD: Hašování RNDr. Michal Žemlička.
Advertisements

© 2000 VEMA počítače a projektování spol. s r. o..
Monitorovací systém Asistent
Zpracování SQL Lubomír Andrle 5. přednáška
Základy databázových systémů
Přednáška č. 1 Úvod, Historie zpracování dat, Základní pojmy
Přednáška č. 3 Normalizace dat, Datová a funkční analýza
Aplikační a programové vybavení
Business intelligence
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
DB1 – 9. cvičení Optimalizace dotazu Konkurenční přístup a deadlock Indexace Transakce.
Přednáška č. 5 Proces návrhu databáze
Informatika pro ekonomy II přednáška 11
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Přínosy virtualizace a privátního cloudu
PROGRAMOVACÍ JAZYKY (c) Tralvex Yeap. All Rights Reserved.
Možnosti implementace temporálních Databází v Caché Lukáš Rychnovský
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
Úvod do databází Databáze.
MySQL - Vytvoření nové tabulky  create table jméno_tabulky (jméno_položky typ_položky,... ) Přehled nejběžnějších datových typů Přehled nejběžnějších.
NET Genium software pro výstavbu a provoz informačního portálu Martin Vonka
Adresářová služba Active directory
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Gymnázium, Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Hodonín Software – úvod.
Relační databáze.
Konceptuální návrh databáze
Vypracoval: Ondřej Dvorský Třída: VIII.A
Databázové systémy. Práce s daty Ukládání dat Aktualizace dat Vyhledávání dat Třídění dat Výpočty a agregace.
Databázové systémy Architektury DBS.
KIV/ZIS cvičení 6 Tomáš Potužák. Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Stáhnout soubor studenti_dotazy_sql.mdb.
Informatika pro ekonomy II přednáška 10
Databázové systémy Přednáška č. 6 Proces návrhu databáze.
Databázové systémy II Přednáška č. X Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
RoBla Makra MS OFFICE.
Databáze.
Dokumentace informačního systému
uložené procedury (stored procedures) triggery, sekvence, pohledy, funkce, parametrické dotazy (prepared statements) komplexní agregace a SQL dotazy jiné.
* Obecně lze říci, že software je programové vybavení počítače např.: * BIOS * Operační systém * Aplikace * Ovladače * Je software důležitý? * Zatímco.
Konceptuální návrh databáze
Vývoj výpočetního modelu
Databázové modelování
Access Vysvětlení pojmu databáze - 01
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Aplikační a programové vybavení
Citect SCADA 7.30 ADO.NET 2013/04 Petr Zima.
Databáze Lokální systémy a SQL servery VY_32_INOVACE_7B10.
Databázové systémy Informatika pro ekonomy, př. 18.
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B13 Autor Ing. Jiří Kalousek Období vytvoření březen.
BLAST (basic local alignment search tool) Vyhledává podobné sekvence v databázích. Stal se nástrojem pro všechno. Určitou dobu kolektiv autorů držel krok.
Architektura počítače
GORDIC spol. s r. o. pobočka Ostrava. Obsah prezentace Varianty řešení -TC Kraje -TC Kraje – hosting dodavatele Maintenance, kompletní aplikační podpora.
Analýza informačního systému. Podrobně zdokumentovaný cílový stav Paramentry spojené s provozem systému – Cena – Přínosy – Náklady a úspory – …
DBXplorer Systém pro vyhledávání nad relačními databází podle klíčových slov. zpracovala Margarita Vishnyakova.
Kontakty slajdy: ftp://ulita.ms.mff.cuni.cz/predn/POS.
Databázové systémy Úvod, Základní pojmy. Úvod S rozvojem lidského poznání roste prudce množství informací. Jsou kladeny vysoké požadavky na ukládání,
Helios Orange - Implementace systému
24 Používání relačních databází (základní pojmy a principy z oblasti relačních databází, struktura databáze,oblasti použití relačních databází, vkládání.
Personální audit - cesta k efektivitě využívání lidských zdrojů.
Nastavení serverů OB21-OP-EL-KON-DOL-M Orbis pictus 21. století.
Databáze ● úložiště dat s definovaným přístupem ● typy struktury – strom, sekvence, tabulka ● sestává z uspořádaných záznamů ● databáze – struktura – záznam.
Software,hardware,data,biti a bajty.  Software je v informatice sada všech počítačových programů používaných v počítači, které provádějí nějakou činnost.
SOFTWAROVÁ PODPORA PRO VYTVÁŘENÍ FUZZY MODELŮ Knihovna fuzzy procedur Ing. Petr Želasko, VŠB-TU Ostrava.
Stránkování MATĚJ JURIČIČ 2015/2016 EP1 SPŠ A VOŠ JANA PALACHA KLADNO.
Unix a Internet 9. SQL server
Informatika pro ekonomy přednáška 8
Optimalizace SQL dotazů
SQL Server Query Store Miloslav Peterka
Přednáška 9 Triggery.
Transkript prezentace:

Optimalizace DB v informačním systému Petr Sobotka

Optimalizace2 Úvod Ukázka možného užití DB v IS Typy tabulek v IS Číselníky Faktové tabulky Pro konfiguraci, bezpečnost, resourcy… Reporting Zpřístupnění dat (např. klientovi) Pro práci, přehled, zákonem vynucené… Často bývá zdroj potřeby optimalizovat

Petr SobotkaOptimalizace3 Úvod Co může vyvolat potřebu optimalizovat Refactoring –Typicky dost času na naplánování a otestování Testeři objeví problém –Času již méně… Klient nahlásí problém –Mělo být již včera… Neustálý boj DB časem roste (hlavně faktové tabulky) Nároky klientů se také zvyšují

Petr SobotkaOptimalizace4 Nebezpečí optimalizace Typicky je to zásah do již fungujícího systému Možné zanesení chyb – nutnost řádně testovat, ale někdy není čas Možné zpomalení jiných procesů, někdy až fatální Stojí čas a prostředky Kdo to zaplatí? Jsou na to zdroje (MD, stroje…)? Třeba s tím počítat již při jejich plánování

Petr SobotkaOptimalizace5 Optimalizovat? Někdy nutné pro chod systému Pokud ne, třeba zvážit vynucené smluvně, slíbené či „bylo by dobré, kdyby…“ Vztah s klientem a dobrá pověst vs. vynaložené náklady navíc Optimalizovat co nejdříve Cena s časem roste Některé věci lze již při návrhu a tvorbě

Petr SobotkaOptimalizace6 Co optimalizovat Třeba najít úzké hrdlo Nemá smysl optimalizovat místa, kde se příliš neprojeví Nemusí být ale vždy vše přípustné (např. části systému pod správou jiné společnosti, vazby s jinými systémy…) Optimalizovat lze ledacos, např. Výběr DB (ne všechny DB jsou stavěné na stejnou zátěž nebo způsob použití) Schéma DB Indexy Kód dotazu Plány exekuce Okolní prostředí HW

Petr SobotkaOptimalizace7 Schéma DB Odstranění redundancí Normální formy (normalizace) Šetří místo, méně šancí udělat chybu („jedna pravda“) Velké vs. malé tabulky Větší tabulka znamená větší místo v operační paměti pro každý řádek Menší tabulky je ale zase potřeba častěji joinovat Přidaní redundance k urychlení (je ale proti NF) Předpočítané sloupce (např. agregované hodnoty) Předpočítané tabulky (může ušetřit joiny a výpočty) Ale zabírá více místa, zvětšuje tabulky, větší možnost výskytu chyb… třeba zvážit, kde se vyplatí!

Petr SobotkaOptimalizace8 Schéma DB Triggery bývají drahé lépe použít akce puštené přímo v updatovacích procedurách Používat co nejmenší datové typy Méně místa, snadněji do operační paměti U sloupců i indexů Používat (pokud lze) typy omezené délky Snižuje fragmentaci v případě častých deletů a updatů (mezery různých délek a záznamy taky)

Petr SobotkaOptimalizace9 Indexy Struktury, které urychlují hledání v DB Některé typy (záleží na DB, které poskytuje) B-Stromy –Vhodný pro intervalové dotazy a použitelný pro přímé porovnání hodnot s nízkou kardinalitou –Na pořadí sloupců záleží! (index na A,B lze použít pro A,B či A) –Vložené sloupce pro rychlejší přístup –Klastrovaný vs. neklastrovaný Hashovací –Vhodný pro přímé porovnání Bitmapový –Bitmapa Řádky x Hodnoty (vysokých kardinalit), ideální pro přímé srovnání s hodnotou přes vícero takových sloupců

Petr SobotkaOptimalizace10 Indexy Třeba udržovat, aby plně efektivní! Ideálně v pravidelných intervalech rebuild (joby v méně vytíženou dobu) Vhodný je také občasný monitoring adminem Ne vždy jen pozitivní dopad Zabírají místo Zpomalují inserty, delety a updaty –Pro hromadné úpravy je ovšem možno je dočasně vypnout (např. v době, kdy minimální provoz)

Petr SobotkaOptimalizace11 Partitioning Partitioning (někdy tzv. horizontální) Dle hodnot „některého“ sloupce je možné rozdělit tabulku na více částí –např. u klastrovaných tabulek v MSSQL to musí být část primárního klíče či klastrovaného indexu… Při dotazech s touto tabulkou se pak většinou vystačí jen s částí a tedy se může pracovat s méně daty Části mohou dokonce být uloženy v různých DB, takže i na jiném disku nebo stroji a lze je zabalit (např. lze použít, aby stará, téměř nepoužívaná, data faktové tabulky nenafukovala tolik DB)

Petr SobotkaOptimalizace12 Kód dotazu Na vyhodnocení SQL příkazu se lze dívat jako na běžný programovací jazyk Třeba minimalizovat počet drahých operací (např. konverze, TRUNCATE TABLE místo DELETE FROM…) Obzvláště pozor na cykly a kurzory Dlouhá transakce trvá neúměrně dlouho! Kde možné, tak dobré rozdělit do více běhů Ale příliš mnoho drobných transakcí také pomalé Často stejný dotaz zapsaný jiným kódem odlišně vyhodnocován Má jiný plán exekuce

Petr SobotkaOptimalizace13 Plány exekuce Možných plánů příliš mnoho Všechny možné kombinace JOINů, filtrů… Nevyplatí se procházet všechny Plánování typicky využívá statistik, které si DB uchovává Plány stejného kódu dotazu se mohou časem měnit a to ne vždy k lepšímu! V každém rozumném grafickém správci DB lze plán odhadnout či zobrazit spolu s exekucí Je možné použít i přímých příkazů (např. explain v MySQL)

Petr SobotkaOptimalizace14 Plány exekuce Uloženým procedurám lze definovat vlastní plán Ale lépe jen v krajních případech (případné změny v DB mohou tento plán zneefektivnit a jen uživatel ho může změnit) Jak dosáhnout, aby byly použity indexy? Úpravou kódu dotazu –Např. konverze na sloupci indexu ve WHERE klauzuli může způsobit, že index nepoužit Doporučením indexu v dotazu (use index v MySQL) Cache Ukládány výsledky vyhodnocení každého dotazu, užité indexy… Poddotazy apod., které stejný kód, stačí vyhodnotit jednou

Petr SobotkaOptimalizace15 Okolní prostředí Cache může mít i aplikační server S vhodným nastavením expirace dotazů Pomalá či zahlcovaná síť S tím i ta nejoptimalizovanější DB nic nezmůže Vhodné užívání DB Minimalizace počtu dotazů Ale také posílaní co nejméně dat zpět Pozor na timeouty v okolním prostředí! Omezení náročnosti kladených dotazů

Petr SobotkaOptimalizace16 Okolní prostředí Aplikace nemusí stíhat prezentovat data, když příliš mnoho Stránkování Omezení rozsahu vstupních parametrů

Petr SobotkaOptimalizace17 Scheduling (rozvrhování) Raději jen pokud nejde jinak Lze měnit priority přístupu k tabulce některých SQL příkazů DELETE, INSERT, UPDATE… Normálně zápis zablokuje ostatní za sebou a počká, až dočtou ty před ním Lze docílit, aby čtení nebylo blokováno, ale psaní předběhlo… –LOW_PRIORITY a HIGH_PRIORITY v MySQL –Na jednotlivý příkaz nebo změna v celé DB

Petr SobotkaOptimalizace18 HW Již pro administrátory Správný chod vyžaduje důsledný monitoring Lze objevit řadu problémů, než eskalují Chování DB i stroje, kde běží se časem podstatně mění! Dostatek paměti a výpočetní síly Dle rostoucích požadavků Dostatek místa na disku Čištění logů, temp adresářů pro integraci…

Petr SobotkaOptimalizace19 HW Někdy se DB s jinými aplikacemi navzájem dusí Rozmístit na více strojů, alespoŇ virtuálních Zálohy co nejvíce vs. ztráta výkonu, když běží Monitoring běhu služeb po pádech či restartech Občas některé nenaběhnou Lze částyečně automatizovat Také možnost využít profesionálních datacenter…

Petr SobotkaOptimalizace20 Můžeme jít dále OLAP Data Mining DW, DM DWA …

Petr SobotkaOptimalizace21 Dotazy?

Petr SobotkaOptimalizace22 Zdroje MySQL Query Optimization Paul Dubois,