Paralelní dotazy v PostgreSQL 9.6 (a 10.0)

Podobné dokumenty
INDEXY JSOU GRUNT. Pavel Stěhule

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

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

PG 9.5 novinky ve vývoji aplikací

Monitoring výkonu PostgreSQL

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

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

Optimalizace dotazů a databázové transakce v Oracle

Novinky v PostgreSQL 10 (a 11)

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

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

Architektury databázových

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

Materializované pohledy

TimescaleDB. Pavel Stěhule 2018

Návrh a prototypová implementace databáze pro

Operátory ROLLUP a CUBE

Tabulka fotbalové ligy

PostgreSQL Novinky (a JSONB) Tomáš Vondra, GoodData (tomas.vondra@gooddata.com) (tomas@pgaddict.

Migrace CIDUG. Ing. Pavel Krutina

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

SSD vs. HDD / WAL, indexy a fsync

PostgreSQL jako platforma pro datové sklady

Reaktivní programování v.net

Výkonnostní archeologie

FRED & PostgreSQL. CZ.NIC, z.s.p.o. Jaromír Talíř <jaromir.talir@nic.cz>

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

zobrazení délky ve výpisu v psql

cstore_fdw column store pro PostgreSQL Prague PostgreSQL Developer Day 2015 Jan Holčapek

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

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

Architektura DBMS. RNDr. Ondřej Zýka

Použití databází na Webu

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

Dotazovací jazyky I. Datová krychle. Soběslav Benda

Analýza a modelování dat. Přednáška 9

Analýza a modelování dat. Přednáška 8

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

CSPUG 2011-květen. GridSQL a pg-pool II. Vratislav Beneš benes@optisolutions.cz

Administrace Oracle - Správa zdrojů

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

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

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

Paralelní a distribuované výpočty (B4B36PDV)

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

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

01. Kdy se začala formovat koncept relačních databází (Vznik relačního modelu, první definice SQL)? a) 1950 b) 1960 c) 1970 d) 1980

Netezza. Martin Pavlík. 2. Února to pravé řešení pro analytický datový sklad

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

KIV/ZIS - SELECT, opakování

Vícevláknové programování na CPU: POSIX vlákna a OpenMP I. Šimeček

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

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

NPRG051 Pokročilé programování v C /17 Úkol 2

Enterprise funkce SQL Serveru 2016, které jsou od SP1 zdarma

Architektura DBMS. MI-DSP 2013/14 RNDr. Ondřej Zýka,

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

Optimalizace SQL dotazů

Spracovanie dotazov v PostgreSQL. Tomáš Kovařík MFF UK, Praha

<Insert Picture Here> EXADATA extrémní infrastruktura pro datové sklady

Transakce a zamykání Jiří Tomeš

PostgreSQL návrh a implementace náročných databázových aplikací

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

Paralelní a distribuované výpočty (B4B36PDV)

Fyzické uložení dat a indexy

DATA CUBE. Mgr. Jiří Helmich

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Databáze SQL SELECT. David Hoksza

SQL injection princip a ochrana

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

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

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

SQL Spreadsheet. Jakub Čermák

prostředí IDS 11.5 na Martin Mikuškovic, ICZ a. s

Úvod do databázových systémů 3. cvičení

Programování v jazyku C# II. 5.kapitola

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

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

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

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

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

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

Semestrální práce z DAS2 a WWW

Procesy a vlákna (Processes and Threads)

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

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

Analýza a modelování dat 6. přednáška. Helena Palovská

EFEKTIVNÍ INFRASTRUKTURA

WWW dotazovací služby pro prostorová data URM. Jiří Čtyroký Útvar rozvoje hl. m. Prahy

Instalace. Produkt je odzkoušen pro MS SQL server 2008 a Windows XP a Windows 7. Pro jiné verze SQL server a Windows nebyl testován.

6. Fyzická (interní) úroveň databázového systému

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph)

Marketingová komunikace. 3. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK3PH (vm3bph)

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Jakub Čermák Microsoft Student Partner

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

Databázové systémy úvod

P2D Život postgresového serveru bez ručních zásahů. Jakub Jedelský

Transkript:

Paralelní dotazy v PostgreSQL 9.6 (a 10.0) Tomáš Vondra tomas.vondra@2ndquadrant.com Prague PostgreSQL Developer Day 16. února, 2017

Agenda spojení vs. procesy v PostgreSQL využití zdrojů výhody, nevýhody, omezení paralelizace dotazů v PostgreSQL 9.6 princip paralelizace paralelizované operace, omezení pár benchmarků pro ilustraci PostgreSQL 10 (a dál) výhled do budoucnosti

Spojení vs. procesy spojení se mapují na procesy 1:1 uživatel otevře spojení (TCP/IP, socket, ) postmaster udělá fork() a vytvoří backend každý backend se stará o jediné DB spojení backend je proces na úrovni OS SELECT pg_backend_pid(); žádné forkování (před 9.6) žádné thready (bez zamykání lokálních objektů)

Spojení vs. procesy 1:1 mapování (jedno spojení jeden proces) minimální overhead, ideální pro OLTP aplikace zpracování pár řádek paralelizovat lze jen malou část exekuce dotazu (Amdahlův zákon) některé DB mají sdílené procesy jeden sdílený backend obsluhuje více spojení / sessions řeší časté odpojování/připojování, mnoho současných spojení,... v PostgreSQL řeší connection pooling (pgbouncer, ) tento typ paralelismu není předmětem přednášky

Dotazy vs. zdroje OLTP aplikace jednoduché dotazy, zpracování minima dat počet spojení > počet CPU / disků / zdroje se saturují (přidáte CPU/disky vyšší výkon) OLAP aplikace složitější dotazy, velké objemy dat spojení je typicky méně než CPU / disku při 1:1 mapování se zdroje nesaturují (přidání HW nepomůže)

Dotazy vs. zdroje OLTP aplikace jednoduché dotazy, zpracování minima dat počet spojení > počet CPU / disků / zdroje se saturují (přidáte CPU/disky vyšší výkon) OLAP aplikace PostgreSQL 9.6 složitější dotazy, velké objemy dat spojení je typicky méně než CPU / disku při 1:1 mapování se zdroje nesaturují (přidání HW nepomůže)

Umožnit dotazům využít více zdrojů. Primárně CPU, do jisté míry I/O.

Paralelní dotazy EXPLAIN SELECT * FROM accounts WHERE filler LIKE '%x%'; QUERY PLAN ----------------------------------------------------------------- Gather (cost=1000.00..217018.43 rows=1 width=97) Workers Planned: 2 -> Parallel Seq Scan on accounts (cost=0.00..216018.33...) Filter: (filler ~~ '%x%'::text) (4 rows) Gather nastartuje pracovní procesy, přijímá od nich výsledky počet workerů je omezen (celkový / per Gather) pool procesů někde pod ním musí být parallel sequential scan

Paralelní dotazy nesmí... běžet v SERIALIZABLE módu volat funkce označené jako PARALLEL UNSAFE zapisovat do databáze / zamykat řádky být suspendovatelné pozastavení dotazu, exekuce jiného DECLARE CURSOR FOR smyčky v PL/pgSQL běžet v rámci jiného (již paralelního) dotazu dotaz z funkce volané z paralelního dotazu, apod.

Driving Table partitioning parallelism data se rozdělí na menší části worker procesy zpracovávají části nesouvisí s (deklarativním) partitioningem řeší se dynamicky při čtení dat z tabulky aktuálně pouze pro Sequential Scan worker procesy se střídají ve čtení bloků plánuje se Bitmap Heap Scan

PostgreSQL 9.6 scans (driver table) Parallel Sequential Scan 10: Bitmap Index Scan joins (inner driver table, outer cokoliv parallel safe) Nested Loop Hash Join (10: sdílená hash tabulka) 10: Merge Join? aggregation rozděleno na dva kroky (partial + gather + finalize) agregační funkce musí podporovat (většina built-in funkcí je OK) výjimkou ordered set aggregates (e.g. percentily) a GROUPING SETs

Příklad (Agregace) SELECT max(value) FROM bigtable; QUERY PLAN -------------------------------------- Aggregate -> Seq Scan on bigtable (2 rows) QUERY PLAN ------------------------------------------------------- Finalize Aggregate -> Gather Workers Planned: 4 -> Partial Aggregate -> Parallel Seq Scan on randomintegers (5 rows)

Příklad (Agregace + Join) SELECT count(*) FROM pgbench_accounts a, pgbench_branches b WHERE a.bid = b.bid; QUERY PLAN -------------------------------------------------- Aggregate -> Hash Join Hash Cond: (a.bid = b.bid) -> Seq Scan on pgbench_accounts a -> Hash -> Seq Scan on pgbench_branches b (6 rows)

Příklad (Agregace + Join) SELECT count(*) FROM pgbench_accounts a, pgbench_branches b WHERE a.bid = b.bid; QUERY PLAN ----------------------------------------------------------------- Finalize Aggregate -> Gather Number of Workers: 5 -> Partial Aggregate -> Hash Join Hash Cond: (a.bid = b.bid) -> Parallel Seq Scan on pgbench_accounts a -> Hash -> Seq Scan on pgbench_branches b (9 rows)

PostgreSQL 9.6 / TPC-H 10GB max_parallel_workers_per_gather = 4 250 200 vteřiny 150 100 50 0 Q1 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q12 Q15 Q16 Q17 Q19 Q20 Q21 Q22 serial parallel http://rhaas.blogspot.cz/2016/04/postgresql-96-with-parallel-query-vs.html

Otázky?