Optimalizace serveru

Podobné dokumenty
Optimalizace dotazů a databázové transakce v Oracle

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

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

Struktura pamětí a procesů v DB Oracle. Radek Strnad

Monitoring SQL Server, Resource Governor, Tracing SQL Server

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

Administrace Oracle - Správa zdrojů

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

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

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

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

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

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

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

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

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

Administrace Oracle. Práva a role, audit

Tabulka fotbalové ligy

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

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

Architektura DBMS. RNDr. Ondřej Zýka

Optimalizace práce optimalizátoru Oracle10g 1

4. lekce Přístup k databázi z vyššího programovacího jazyka

Pomožte sobě i supportu

Administrace Oracle Práva a role, audit. Kukhar Maria

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

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

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

INDEXY JSOU GRUNT. Pavel Stěhule

PG 9.5 novinky ve vývoji aplikací

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

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

Virtual Private Database (VPD) Jaroslav Kotrč

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

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

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

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

Roman Dušek

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

Virtual private database. Antonín Steinhauser

Obsah. 2 SQL Server Profiler Sledování na straně klienta Sledování na straně serveru Analýza trace souboru...

GUIDELINES FOR CONNECTION TO FTP SERVER TO TRANSFER PRINTING DATA

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

MySQL sežere vaše data

Monitoring výkonu PostgreSQL

Vladimír

Administrace Oracle. Jan Šaršon. Audit databáze

Vkládání, aktualizace, mazání

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

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

Bezpečnosť v databáze Oracle

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

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

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

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

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

Databáze SQL SELECT. David Hoksza

Semestrální práce z DAS2 a WWW

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

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

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

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

Obsah. Úvod 9. Co kniha není 9 Cíl knihy 9 Pro koho je kniha určena 10 Doprovodné CD 10. KAPITOLA 1 Stručný přehled 11

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

Nové vlastnosti IDS Beta 3

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

Vytvoření pokročilé Fotogalerie v Drupalu - Views

PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK

Ukládání a vyhledávání XML dat

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

Databázové systémy a SQL

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

TimescaleDB. Pavel Stěhule 2018

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

Paralelní dotazy v PostgreSQL 9.6 (a 10.0)

Oracle XML DB. Tomáš Nykodým

Introduction to MS Dynamics NAV

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

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

RELAČNÍ DATABÁZOVÉ SYSTÉMY

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

BAKALÁŘSKÁ PRÁCE. Optimalizace SQL dotazů v databázi Oracle. SQL query optimization in Oracle database. Bohdan Blaha

1. Maple - verze. 2. Maple - prostredi. Document Mode vs. Worksheet Mode

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA

Databázové systémy úvod

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

10. Architektura klient/server a třívrstvá architektura

10. Architektura klient/server a třívrstvá architektura

INSTALACE DATABÁZE ORACLE A SYSTÉMU ABRA NA OS WINDOWS

NSS - Cache 5. LECTURE MARTIN TOMASEK

Konsolidace na privátní cloud

Když konvenční disky nestačí tempu vašich aplikací

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

User-Managed Backup RMAN (od v. 8.1)

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

SQL injection princip a ochrana

Kód v databázi. RNDr. Ondřej Zýka

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

Informační systémy 2008/2009. Radim Farana. Obsah. Skripty a dávky. Nastavení aktuální databáze. USE DatabaseName

Transkript:

Optimalizace serveru O výkonnostních problémech se lze dovědět dvěma způsoby na základě stížnosti uživatelů, či na základě nastavených poplachů v databázi (například při vysokém zatížení CPU, nebo příliš mnoho otevřených kurzorů apod.) Zjišťovat podrobnosti ohledně problému (v případě, že není způsoben mimo db), lze pomocí automatických nástrojů co jsou u Oracle k dispozici (ADDM apod.) Nebo ručně za pomoci dynamických pohledů V$

Optimalizace serveru Identifikace úzkého hrdla (typicky na základě pozorování zpomalení klientské aplikace) Využití CPU V$SYSSTAT(všechny sessiony dohromady), V$SESSTAT(podle jednotlivých session) V případě, že běží Oracle Database Resource Manager pohled V$RSRC_CONSUMER_GROUP (dle consumer group) (Je dobré zároveň ověřit, že procesorový čas nespotřebovává jiný proces.)

Optimalizace serveru Možná řešení problému: Přesunutí některých úloh, popřípadě spouštění některých procesů mimo špičku. Použít SQL_TRACE TKPROF (viz pozdější slidy) a odladit příslušný PL/SQL program

Optimalizace serveru I/O V$SYSTEM_EVENT (zkontrolovat jak často a jak dlouho se čeká na I/O) V$IOSTAT_CONSUMER_GROUP (I/O statistiky dle consumer group) V$IOSTAT_FILE (I/O statistiky dle souboru) V$IOSTAT_FUNCTION(statistiky dle jednotlivých funkcí databáze jako LGWR, DBWR...)

Optimalizace serveru V$SEGSTAT V$SEGMENT_STATISTICS (důležité pohledy co se týče výkonu.. Dá se z nich například spočítat jak často byly data nalezeny v cache a nemuselo se fyzicky číst). Tyto pohledy jsou hlavně dobré pro zjištění kterých tabulek se týkají výkonnostní nedostatky. Řešení: dle typu problému. V některých případech může pomoci zvýšení počtu blok bufferů v SGA, v případě

Optimalizace serveru Síť: V$IOSTAT_NETWORK Obsahuje počet čtení, dobu čekání na čtení a zápis Počet kb dat zapsaných/přečtených. Řesení: Přesunutí úloh mimo spičku, popřípadě přepsání klientských aplikací, aby posílali více žádostí naráz místo opětovného připojování.

Wait events Pohledy V$SESSION informace o tom na co naposledy každá session čekala. V$SESSION_EVENT všechny čekání od začátku session

Některé typy wait events Buffer busy waits záleží na typu bufferu (Čekání na načtení do bufferu popřípadě blok je zamčený) free buffer waits Pomalé DBWR/případně malá cache db file scattered/sequential read, Potřeba prověřit V$SQLAREA a najít dotazy co toto způsobují popřípadě je pomalé I/O

Typy wait events library cache latch waits Parsování sql (V$SQLAREA) log buffer space Redo logy V$SYSSTAT Pomalé I/O log file sync Pomalé disky s logy, případně příliš časté použivání commit

Pamět Velký vliv na výkon má nastavení paměti. Je silně doporučeno používat automatickou správu paměti. Ta lze konfigurovat pomocí inicializačních parametrů MEMORY_TARGET a MEMORY_MAX_TARGET Oracle posléze automaticky rozděluje pamět mezi SGA a PGA Nastavením MEMORY_TARGET na 0 se automatická správa paměti vypíná Je potřeba aby se tyto obě oblasti vešli do paměti a nebyly částečně swapovány na disk. Pakliže je doopravdy potřeba nastavit ručně je na to dobré použít nástroj Memory Advisor

Pamět DB_CACHE_SIZE, SHARED_POOL_SIZE, LARGE_POOL_SIZE, JAVA_POOL_SIZE, and STREAMS_POOL_SIZE (velikosti cache) Velikost logbufferu, velikost ostatních cache jako je keep a recycle je bez zásahu automatické správy paměti a je třeba jí konfigurovat ručně. Keep pool se používá, když tabulka(index) je malá a často se k ní přistupuje. Aby nezestárla a nebyla odstraněna Recycle pool, když se přistupuje k ní přistupuje málokdy.

Automatické nástroje na ladění výkonu Automatic Workload Repository Automatic Database Diagnostic Monitor SQL Tuning Advisor SQL Access Advisor End to End Application Tracing

Automatic Workload Repository Vytváří snapshoty z většiny statistik ve výše zmíněných dynamických pohledech jednou za určitý časový úsek Časový úsek i délka historie je nastavitelná

Automatic Database Diagnostic Monitor Analyzuje data získaná pomocí AWR a automaticky zjištuje problémy a ve většině případů poskytuje i rady pro případné řešení. ADDM upozorňuje hlavně na tyto problémy: Na takzvaná uzká hrdla (například pokud jsou disky zatížené na maximum a procesory vícemeně drtivou většinu času čekají na I/O). Na aplikace, které se zbytečně odpojují a připojují. Výkonnostní problémy v souvislosti se zamykáním

SQL Tuning Advisor SQL tuning advisor zkoumá SQL dotazy, které mají velký dopad na výkon celé databáze během času na údržbu a zkouší jestli by se nějakým způsobem nedalo urychlit jejich provádění. V závislosti na nastavení ACCEPT_SQL_PROFILES tyto zlepšení buď rovnou aplikuje nebo pouze doporučí.

Příklad výstupu SQL Tuning Advisor RECOMMENDATIONS -------------------------------------------------------------------------------- GENERAL INFORMATION SECTION ------------------------------------------------------------------------------- Tuning Task Name : emp_dept_tuning_task Scope : COMPREHENSIVE Time Limit(seconds): 60 Completion Status : COMPLETED Started at : 05/06/2004 09:29:13 Completed at : 05/06/2004 09:29:15 ------------------------------------------------------------------------------- SQL ID : 0wrmfv2yvswx1 SQL Text: SELECT e.*, d.* FROM emp e JOIN dept d ON e.deptno = d.deptno WHERE NVL(empno, '0') = :empno ------------------------------------------------------------------------------- FINDINGS SECTION (2 findings) -------------------------------------------------------------------------------

Příklad výstupu SQL Tuning Advisor 1- Statistics Finding --------------------- Table "SCOTT"."EMP" and its indices were not analyzed. Recommendation -------------- Consider collecting optimizer statistics for this table and its indices. execute dbms_stats.gather_table_stats(ownname => 'SCOTT', tabname => 'EMP', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE) Rationale --------- The optimizer requires up-to-date statistics for the table and its indices in order to select a good execution plan. 2- Restructure SQL finding (see plan 1 in explain plans section) ---------------------------------------------------------------- The predicate NVL("E"."EMPNO",0)=:B1 used at line ID 2 of the execution plan contains an expression on indexed column "EMPNO". This expression prevents the optimizer from selecting indices on table "SCOTT"."EMP". Recommendation --------------

Příklad výstupu SQL Tuning Advisor Rewrite the predicate into an equivalent form to take advantage of indices. Alternatively, create a function-based index on the expression. Rationale --------- The optimizer is unable to use an index if the predicate is an inequality condition or if there is an expression or an implicit data type conversion on the indexed column. ------------------------------------------------------------------------------- EXPLAIN PLANS SECTION -------------------------------------------------------------------------------

Příklad výstupu SQL Tuning Advisor 1- Original ----------- Plan hash value: 1863486531 ---------------------------------------------------------------------------------------- Id Operation Name Rows Bytes Cost (%CPU) Time ---------------------------------------------------------------------------------------- 0 SELECT STATEMENT 1 107 4 (0) 00:00:01 1 NESTED LOOPS 1 107 4 (0) 00:00:01 2 TABLE ACCESS FULL EMP 1 87 3 (0) 00:00:01 3 TABLE ACCESS BY INDEX ROWID DEPT 1 20 1 (0) 00:00:01 4 INDEX UNIQUE SCAN PK_DEPT 1 0 (0) 00:00:01 ---------------------------------------------------------------------------------------- Note ----- - dynamic sampling used for this statement ------------------------------------------------------------------------------- 1 row selected.

SQL Access Advisor Doporučuje zřízení/zrušení indexů, vytvoření materializovaných pohledů apod... Jako vstup je potřeba definovat jaké dotazy se budou vykonávat a na základě toho a statistik se generuje výsledné doporučení.

End to End Application Tracing Usnadňuje diagnostikování problémů ve vícevrstvém(multitier) prostředí kdy koncový klient je připojen přes prostředníka a typicky i pomocí více session. Můžeme sledovat požadavky: Dle identifikátoru klienta Dle služby Dle modulu Dle akce (jako INSERT UPDATE)

End to End application Tracing Session Instance Po uložení tracovaných informací mohou být konsolidovány pomocí utility trcsess a analyzován pomocí TKPROF Trcsess je potřeba použít tam kde jsou sessiony vyřizovány pomocí víceroprocesů (shared server installation) TKPROF se použije hlavně na to aby tracefiles byly převedeny do čitelnějšího formátu.

End to End Application Tracing - příklad $ tkprof orcl102_ora_3064.trc output.prf EXPLAIN=scott/tiger SYS=NO Tkprof: Release 9.2.0.1.0 - Production on Tue Dec 24 15:32:43 2002 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Trace file: ORCL102_ora_3064.trc Sort options: default ******************************************************************************** count = number of times OCI procedure was executed cpu = cpu time in seconds executing elapsed = elapsed time in seconds executing disk = number of physical reads of buffers from disk query = number of buffers gotten for consistent read current = number of buffers gotten in current mode (usually for update) rows = number of rows processed by the fetch or execute call ********************************************************************************

End to End Application Tracing Příklad select * from employee where emp_id = 3737 call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 10 0.00 0.03 0 0 0 0 Execute 10 0.00 0.00 0 0 0 0 Fetch 20 0.34 0.35 72 4730 0 10 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 40 0.34 0.39 72 4730 0 10 Misses in library cache during parse: 1 Optimizer goal: CHOOSE Parsing user id: 59 Rows Row Source Operation ------- --------------------------------------------------- 1 TABLE ACCESS FULL EMPLOYEE

Získávání výkonnostních statistik K efektivnímu zjištování výkonnostních problémů je třeba statistik. Oracle jich generuje spoustu typů ať už pro celý system, sessiony či SQL dotazy. Rovněž lze získat statistiky týkající se služeb a segmentů. Kumulativní hodnoty jsou typicky dostupné přes dynamické pohledy V$SESSTAT a V$SYSSTAT (nutno podotknout že tyto statistiky jsou resetovány s vypnutím systému). Názvy všech statistik jsou dostupné přes pohled V$STATNAME

Získávání výkonnostních statistik Dalšími typy stastik jsou metrické (měřící jak rychle se mění kumulativní statistiky), které jsou rovněž dostupné přes již zmíněné pohledy. Další jsou vzorkové odebrané pomocí ASH (Active session history) dostupné přes pohled V$ACTIVE_SESSION_HISTORY

Stabilní plánování Očekáváme data s podobným rozložením a nechceme, aby se díky změně provádění dotazu neočekávaně nezměnili požadavky na zdroje. Užitečné ve chvilích, zejména ve chvilích, kdy za každou cenu omezit riziko.

Stabilní plánování Plány pro pro provádění dotazů, jsou uchovávány v tzv. outlines. Outline je implementována jako sada hintů k SQL dotazu pro optimizátor. Změníme-li jakýmkoliv způsobem SQL dotaz i přidání hintu pro optimizátor nebo změna textové konstanty (potřeba používat proměnné), výsledkem je nový outline.

Stabilní plánování Pro to aby outlines fungovali je potřeba mít konzistetně nastavené následující parametry: QUERY_REWRITE_ENABLED STAR_TRANSFORMATION_ENABLED OPTIMIZER_FEATURES_ENABLE Outlines lze pro dotazy vytvářet automaticky pro všechny či použitím příkazu CREATE OUTLINE pro specifický dotaz

Stabilní plánování Automatické vytváření outlines plošné ALTER SYSTEM SET create_stored_outlines=true; ALTER SESSION SET create_stored_outlines=true; Pro session

Stabilní plánování Manuální vytváření outlines Napřed potřeba přidělit potřebná práva CONN sys/password AS SYSDBA GRANT CREATE ANY OUTLINE TO nekdo; GRANT EXECUTE_CATALOG_ROLE TO nekdo;

Stabilní plánování příklad CONN nekdo -- Vytvoření outline pro daný dotaz CREATE OUTLINE emp_dept FOR CATEGORY kategorie ON SELECT e.empno, e.ename, d.dname FROM emp e, dept d WHERE e.deptno = d.deptno; -- Kouknout na vytvořenou outline COLUMN name FORMAT A30 SELECT name, category, sql_text FROM user_outlines WHERE category = 'kategorie'; NAME CATEGORY ------------------------------ ------------------------------ SQL_TEXT -------------------------------------------------------------------------------- EMP_DEPT kategorie SELECT e.empno, e.ename, d.dname FROM emp e, dept d WHERE e.deptno = d.deptno 1 row selected.

Stabilní plánování příklad -- Vypsat hinty přiřazené k outline COLUMN hint FORMAT A50 SELECT node, stage, join_pos, hint FROM user_outline_hints WHERE name = 'EMP_DEPT'; NODE STAGE JOIN_POS HINT ---------- ---------- ---------- -------------------------------------------------- 1 1 0 NO_EXPAND(@"SEL$1" ) 1 1 0 PQ_DISTRIBUTE(@"SEL$1" "E"@"SEL$1" NONE NONE) 1 1 0 USE_MERGE(@"SEL$1" "E"@"SEL$1") 1 1 0 LEADING(@"SEL$1" "D"@"SEL$1" "E"@"SEL$1") 1 1 0 NO_STAR_TRANSFORMATION(@"SEL$1" ) 1 1 0 NO_FACT(@"SEL$1" "E"@"SEL$1") 1 1 0 NO_FACT(@"SEL$1" "D"@"SEL$1") 1 1 2 FULL(@"SEL$1" "E"@"SEL$1") 1 1 1 INDEX(@"SEL$1" "D"@"SEL$1" ("DEPT"."DEPTNO")) 1 1 0 NO_REWRITE(@"SEL$1" ) 1 1 0 NO_REWRITE(@"SEL$1" ) 11 rows selected.

Stabilní plánování příklad ALTER SESSION SET query_rewrite_enabled=true; ALTER SESSION SET use_stored_outlines=kategorie; Tímto se nastaví používání outlines v dané kategorii

Zdroje http://docs.oracle.com/cd/b28359_01/server.111/b28 http://docs.oracle.com/cd/b28359_01/server.111/b28 http://docs.oracle.com/cd/b14117_01/server.101/b10 http://www.oracle-base.com/articles/misc/outlines.ph http://psoug.org/reference/outlines.html http://www.databasejournal.com/features/oracle /article.php/3492521/automatic-sql-tuningusing-sql-tuning-advisor.htm