+ All Categories
Home > Documents > Optimalizace DB v informačním systému

Optimalizace DB v informačním systému

Date post: 09-Jan-2016
Category:
Upload: chione
View: 36 times
Download: 4 times
Share this document with a friend
Description:
Optimalizace DB v informačním systému. Petr Sobotka. Ú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é… - PowerPoint PPT Presentation
22
Optimalizace DB v informačním systému Petr Sobotka
Transcript
Page 1: Optimalizace  DB v informačním systému

Optimalizace DB v informačním systému

Petr Sobotka

Page 2: Optimalizace  DB v informačním systému

Petr Sobotka Optimalizace 2

Ú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

Page 3: Optimalizace  DB v informačním systému

Petr Sobotka Optimalizace 3

Ú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í

Page 4: Optimalizace  DB v informačním systému

Petr Sobotka Optimalizace 4

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í

Page 5: Optimalizace  DB v informačním systému

Petr Sobotka Optimalizace 5

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ě

Page 6: Optimalizace  DB v informačním systému

Petr Sobotka Optimalizace 6

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

Page 7: Optimalizace  DB v informačním systému

Petr Sobotka Optimalizace 7

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í!

Page 8: Optimalizace  DB v informačním systému

Petr Sobotka Optimalizace 8

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)

Page 9: Optimalizace  DB v informačním systému

Petr Sobotka Optimalizace 9

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ů

Page 10: Optimalizace  DB v informačním systému

Petr Sobotka Optimalizace 10

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)

Page 11: Optimalizace  DB v informačním systému

Petr Sobotka Optimalizace 11

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)

Page 12: Optimalizace  DB v informačním systému

Petr Sobotka Optimalizace 12

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

Page 13: Optimalizace  DB v informačním systému

Petr Sobotka Optimalizace 13

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)

Page 14: Optimalizace  DB v informačním systému

Petr Sobotka Optimalizace 14

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

Page 15: Optimalizace  DB v informačním systému

Petr Sobotka Optimalizace 15

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ů

Page 16: Optimalizace  DB v informačním systému

Petr Sobotka Optimalizace 16

Okolní prostředí

• Aplikace nemusí stíhat prezentovat data, když příliš mnoho

• Stránkování• Omezení rozsahu vstupních parametrů

Page 17: Optimalizace  DB v informačním systému

Petr Sobotka Optimalizace 17

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

Page 18: Optimalizace  DB v informačním systému

Petr Sobotka Optimalizace 18

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…

Page 19: Optimalizace  DB v informačním systému

Petr Sobotka Optimalizace 19

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…

Page 20: Optimalizace  DB v informačním systému

Petr Sobotka Optimalizace 20

Můžeme jít dále

• OLAP

• Data Mining

• DW, DM

• DWA

• …

Page 21: Optimalizace  DB v informačním systému

Petr Sobotka Optimalizace 21

Dotazy?

Page 22: Optimalizace  DB v informačním systému

Petr Sobotka Optimalizace 22

Zdroje

• MySQL Query Optimization• Paul Dubois, 2005

• http://msdn.microsoft.com

• http://technet.microsoft.com


Recommended