Výkonnostní archeologie

Podobné dokumenty
SSD vs. HDD / WAL, indexy a fsync

PostgreSQL na EXT3/4, XFS, BTRFS a ZFS

PostgreSQL na EXT3/4, XFS, BTRFS a ZFS

Paralelní dotazy v PostgreSQL 9.6 (a 10.0)

INDEXY JSOU GRUNT. Pavel Stěhule

Zápisování dat do databáze

Databáze s tisíci uložených procedur. Pavel Bláhovec, DiS pavel@blahovec.cz

Zálohování a rychlá obnova dat Konsolidace serverů a diskových polí Archivace elektronické pošty

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

Výměna Databázového serveru MS SQL

Porovnání rychlosti mapového serveru GeoServer při přístupu k různým datovým skladům

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

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

PostgreSQL jako platforma pro datové sklady

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

Bi-Direction Replication

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

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

ReDefine Midrange Storage VNX/VNXe. Václav Šindelář, EMC

<Insert Picture Here> Software, Hardware, Complete

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

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

V Poličce dne 7. července 2014 Věc: Dodatečná informace k zadávacím podmínkám č. 1

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

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

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

vpsfree.cz: linuxový server u neziskovky

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

Technická specifikace: NPMK Nákup výpočetní techniky

Transakce a zamykání Jiří Tomeš

2.1 Obecné parametry Obecné parametry Rack serveru

SQL - trigger, Databázové modelování

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Databázové systémy a SQL

TECHNICKÁ SPECIFIKACE

Servery Incad, stav k

EFEKTIVNÍ INFRASTRUKTURA

Databázové systémy úvod

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

DataDomain pod drobnohledem

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

Optimalizace dotazů a databázové transakce v Oracle

Ekonomické přínosy Cloud Computingu

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

Výkonnost mikroprocesoru ovlivňují nejvíce dvě hlediska - architektura mikroprocesoru a tzv. taktovací frekvence procesoru.

Hlavní využití počítačů

Monitoring výkonu PostgreSQL

Ro R dina procesor pr ů Int In e t l Nehalem Šmída Mojmír, SMI108 PAP PA 2009

Hyperkonvergovaná řešení jako základní stavební blok moderního IT

Příloha č.2 - Technická specifikace předmětu veřejné zakázky

Intel Microarchitecture Nehalem

Netfox s.r.o. Popis nabídky: Nabízíme Vám dodání zboží dle následující specifikace:

brašna v balení záruka: 3 roky NBD on-site

Virtualizace koncových stanic Položka Požadováno Nabídka, konkrétní hodnota

HAL3000 MČR Pro tak hrají skuteční profesionálové

FLASH NOVÉ HRANICE DOSAŽITELNÉHO

Specifikace předmětu veřejné zakázky

Martin Moravec Run Rate Program Leader

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

Architektura DBMS. RNDr. Ondřej Zýka

8.2 Používání a tvorba databází

Databáze II. 1. přednáška. Helena Palovská

Oracle Exalogic: Ideální platforma pro Cloud Computing

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

1. SYSTÉMOVÉ POŽADAVKY / DOPORUČENÁ KONFIGURACE HW A SW Databázový server Webový server Stanice pro servisní modul...

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

Forenzní analytická jednotka - technická specifikace (9 ks)

Informační a komunikační technologie

Databáze SQL SELECT. David Hoksza

Základní jednotka procvičování

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

Novinky v IBM Notes a Domino. CubeTeam Dan Vrána

PROCESOR. Typy procesorů

Nová éra diskových polí IBM Enterprise diskové pole s nízkým TCO! Simon Podepřel, Storage Sales

Příloha č. 1 - Technická specifiace zboží

verze GORDIC spol. s r. o.

Wonderware hardware. Seznam produktů

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

Mini PC HAL3000 NUC Passive Kč s DPH

IB109 Návrh a implementace paralelních systémů. Organizace kurzu a úvod. RNDr. Jiří Barnat, Ph.D.

Analýza výkonu HELIOS Green

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

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

Základní deska (1) Parametry procesoru (2) Parametry procesoru (1) Označována také jako mainboard, motherboard

Osobní počítač. Zpracoval: ict Aktualizace:

NMS. Linux na Strahově. Radim Roška & Moris Bangoura InstallFest Silicon Hill

Technické prostředky počítačové techniky

Herní PC HAL3000 Artemis výkonný lovec pro nekončící zábavu

Kvantitativní principy návrhu počítačů

HP Compaq Pro 6300 SFF

SERVERY A STORAGE ABACUS Jan Petrák jp@abacus.cz

<Insert Picture Here> EXADATA V2 extremní infrastruktura pro data a databáze

Technická specifikace ČÁST 1. Místo plnění: PČR Kriminalistický ústav Praha, Bartolomějská 10, Praha 1

Architektury databázových

Přechod na virtuální infrastrukturu

Výzva na podání nabídek na veřejnou zakázku malého rozsahu

Migrace CIDUG. Ing. Pavel Krutina

brašna v balení laser. myš USB záruka: 3 roky NBD on-site

Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/

Transkript:

Výkonnostní archeologie Tomáš Vondra, GoodData tomas.vondra@gooddata.com / tomas@pgaddict.com @fuzzycz, http://blog.pgaddict.com Photo by Jason Quinlan, Creative Commons CC-BY-NC-SA https://www.flickr.com/photos/catalhoyuk/94568431

Jak se změnil výkon PostgreSQL za několik posledních verzí? 7.4 vyšla 23, tj. cca 1 let

(překvapivě) ošidná otázka během vývoje se většinou dělají parciální testy srovnání dvou verzí / commitů zaměřené na konkrétní část kódu / vlastnost komplexnější benchmarky pro srovnání dvou verzí obtížné zkombinovat (různý hardware,...) aplikační výkon (ultimátní benchmark) podléhá (pravidelným) upgradům hardwaru růst datových objemů, evoluce aplikace (nové fičury)

(poněkud) nefér otázka vývoj probíhá oproti aktuálně dostupnému hardwaru Kolik RAM jste měli v serveru před 1 lety? Kdo z vás měl před 1 lety SSD/NVRAM disky? Kdo z nás měl stroje s 8 CPU? některé rozdíly jsou důsledkem těchto změn (algoritmy) Každopádně vyšší výkon na aktuálním hardwaru je fajn ;-)

Pojďme si zabenchmarkovat!

Pokud se bojíte čísel nebo grafů, asi byste radši měli odejít hned. Bude tu spousta obojího...

http://blog.pgaddict.com http://planet.postgresql.org

82,71% statistik na internetu je vycucaných z prstu...

... přísahám že ty moje to nejsou!

Benchmarky (přehled) pgbench (TPC-B) transakční benchmark operace pracují s malými počty řádek (přístup přes primární klíče) TPC-DS (náhrada TPC-H) warehouse benchmark dotazy drtící spousty dat (aggregace, joiny, ROLLUP/CUBE,...) fulltext benchmark (tsearch2) primárně o vylepšeních GIN/GiST indexů platí pro další aplikace používající GIN/GiST (geo,...)

Použitý hardware HP DL38 G5 (27-29) 2x Xeon E545 (each 4 cores @ 3GHz, 12MB cache) 16GB RAM (FB-DIMM DDR2 667 MHz), FSB 1333 MHz 6x1k RAID1 (SAS) @ P4 with 512MB write cache S37 1GB (SSD) Workstation i5 (211-213) 1x i5-25k (4 cores @ 3.3 GHz, turbo 3.9 GHz, 6MB cache) 8GB RAM (DIMM DDR3 1333 MHz) S37 1GB (SSD)

pgbench TPC-B transakční benchmark

pgbench tři velikosti datasetů malý (15 MB) střední (~5% RAM) velký (~2% RAM) dva módy read-only a read-write rozsah klientů (1, 2, 4,..., 32)

pgbench tři velikosti datasetů malý (15 MB) < problémy se zámky, etc. střední (~5% RAM) < CPU bound velký (~2% RAM) < I/O bound dva módy read-only a read-write rozsah klientů (1, 2, 4,..., 32)

BEGIN; UPDATE accounts SET abalance = abalance + :delta WHERE aid = :aid; SELECT abalance FROM accounts WHERE aid = :aid; UPDATE tellers SET tbalance = tbalance + :delta WHERE tid = :tid; UPDATE branches SET bbalance = bbalance + :delta WHERE bid = :bid; INSERT INTO history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP); END;

pgbench / large read-only (on SSD) HP DL38 G5 (2x Xeon E545, 16 GB DDR2 RAM), Intel S37 1GB SSD transactions per second 12 1 8 6 4 2 5 1 15 2 25 number of clients 7.4 8. 8.1 head 3 35

pgbench / medium read-only (SSD) HP DL38 G5 (2x Xeon E545, 16 GB DDR2 RAM), Intel S37 1GB SSD transactions per second 8 7 6 5 4 3 2 1 5 1 15 2 25 3 number of clients 8. 8.1 8.2 8.3 9. 9.2 35

pgbench / large read-write (SSD) HP DL38 G5 (2x Xeon E545, 16 GB DDR2 RAM), Intel S37 1GB SSD transactions per second 3 25 2 15 1 5 5 1 15 2 25 number of clients 7.4 8.1 8.3 9.1 9.2 3 35

pgbench / small read-write (SSD) HP DL38 G5 (2x Xeon E545, 16 GB DDR2 RAM), Intel S37 1GB SSD transactions per second 6 5 4 3 2 1 5 1 15 2 25 3 number of clients 7.4 8. 8.1 8.2 8.3 8.4 9. 9.2 35

Co rotační disky? 6 x 1k SAS drives (RAID 1) P4 with 512MB write cache

pgbench / large read-write (SAS) HP DL38 G5 (2x Xeon E545, 16 GB DDR2 RAM), 6x 1k SAS RAID1 transaction per second 8 7 6 5 4 3 2 1 5 1 15 2 number of clients 7.4 (sas) 8.4 (sas) 9.4 (sas) 25 3

No a co ta i5-25k mašina?

pgbench / large read-only (Xeon vs. i5) 2x Xeon E545 (3GHz), 16 GB DDR2 RAM, Intel S37 1GB SSD i5-25k (3.3 GHz), 8GB DDR3 RAM, Intel S37 1GB SSD transactions per second 4 35 3 25 2 15 1 5 5 1 15 2 25 3 number of clients 7.4 (Xeon) 9. (Xeon) 7.4 (i5) 9. (i5) 35

pgbench / small read-only (Xeon vs. i5) transactions per second 2x Xeon E545 (3GHz), 16 GB DDR2 RAM, Intel S37 1GB SSD i5-25k (3.3 GHz), 8GB DDR3 RAM, Intel S37 1GB SSD 1 8 6 4 2 5 1 15 2 25 number of clients 7.4 (Xeon) 7.4 (i5) 9. (Xeon) 9. (i5) 9.4 (Xeon) 9.4 (i5) 3 35

pgbench / small read-write (Xeon vs. i5) 2x Xeon E545 (3GHz), 16 GB DDR2 RAM, Intel S37 1GB SSD i5-25k (3.3 GHz), 8GB DDR3 RAM, Intel S37 1GB SSD transactions per second 8 7 6 5 4 3 2 1 5 1 15 2 25 3 number of clients 7.4 (Xeon) 9.4 (Xeon) 7.4 (i5) 9.4b1 (i5) 35

Legendy říkají že starší verze lépe fungují s nižšími paměťovými limity (shared_buffers etc.)

pgbench / large read-only (i5-25) different sizes of shared_buffers (128MB vs. 2GB) transactions per second 4 35 3 25 2 15 1 5 5 1 15 2 25 3 number of clients 7.4 7.4 (small) 8. 8. (small) 9.4b1 35

transactions per second vs. latence

pgbench transaction rate / 7.4 vs. 9.4 transactions per second / large read-write dataset (32 clients) transactions per second 6 5 4 3 2 1 test timeline (3 minutes) 7.4 9.4

pgbench transaction latency / 7.4 vs. 9.4 average latency (miliseconds) / large read-write miliseconds 1 1 1 1 test duration 7.4 9.4

pgbench / shrnutí značná vylepšení vylepšené zamykání mnoho dalších optimalizací lepší škálování na velké počty jader (64...) výrazné zrychlení i na malém počtu klientů lessons learned frekvence procesoru není míra výkonu počet jader není míra výkonu

TPC-DS Decision Support benchmark (aka Data Warehouse benchmark)

TPC-DS orientováno na analytiku / warehousing dotazy drtící velké objemy dat (GROUP BY, JOIN) neuniformní rozdělení dat (realističtější než TPC-H) definováno 99 šablon dotazů (TPC-H jen 22) některé rozbité (padá generátor) některé zatím nepodporované (ROLLUP/CUBE) 41 dotazů pro >= 7.4 61 dotazů pro >= 8.4 (CTE, Window functions)

TPC-DS 1GB and 16GB datasets (raw data) 1GB nedostatečný pro publikaci, 16GB je nestandardní (dle TPC) ale i tak je to zajímavé... většina produkčních databází se vejde do 16GB ukazuje to trendy (do jisté míry aplikovatelné na větší DB) schéma víceméně defaultní (standard compliance FTW!) stejné pro všechny verze (indexy na FK/join keys, pár dalších) nepochybně možno dál zoptimalizovat

TPC DS / database size per 1GB raw data 7 6 size [MB] 5 4 3 2 1 8. 8.1 8.2 8.3 8.4 data 9. indexes 9.1 9.2 9.3 9.4 head

TPC DS / load duration (1GB) 14 12 duration [s] 1 8 6 4 2 8. 8.1 copy 8.2 indexes 8.3 8.4 vacuum full 9. 9.1 9.2 vacuum freeze 9.3 analyze 9.4 head

TPC DS / load duration (1GB) 12 1 duration [s] 8 6 4 2 8. 8.1 8.2 copy 8.3 indexes 8.4 9. 9.1 vacuum freeze 9.2 analyze 9.3 9.4 head

TPC DS / load duration (16 GB) 9 8 duration [seconds] 7 6 5 4 3 2 1 8. 8.1 LOAD 8.2 8.3 INDEXES 8.4 9. VACUUM FREEZE 9.1 9.2 ANALYZE 9.3 9.4

TPC DS / duration (1GB) average duration of 41 queries 35 3 seconds 25 2 15 1 5 8. 8.1 8.2 8.3 8.4 9. 9.1 9.2 9.3 9.4 head

TPC DS / duration (16 GB) average duration of 41 queries 6 duration [seconds] 5 4 3 2 1 8.* 8.1 8.2 8.3 8.4 version 9. 9.1 9.2 9.3 9.4

TPC-DS / shrnutí výrazně rychlejší load dat většina času se vytváří indexy (paralelizace, RAM) pokud ignorujeme VACUUM FULL (změna implementace v 9.) mírné snížení velikosti výrazně rychlejší dotazy značné zrychlení dotazů (~6x) širší použití indexů, index only scany

Fulltext Benchmark testování GIN a GiST indexů prostřednictvím fulltextu

Fulltext benchmark prohledávání archivů pgsql mailing listů ~1M zpráv, ~5GB dat ~33k reálných dotazů (z postgresql.org) syntetické dotazy dávají cca stejné výsledky SELECT id FROM messages WHERE body @@ ('high & performance')::tsquery ORDER BY ts_rank(body, ('high & performance')::tsquery) DESC LIMIT 1;

Fulltext benchmark / load duration [sec] COPY / with indexes and PL/pgSQL triggers 2 18 16 14 12 1 8 6 4 2 COPY VACUUM FREEZE ANALYZE

Fulltext benchmark / GiST 33k queries from postgresql.org [TOP 1] 6 total runtime [sec] 5 4 3 2 1 8. 8.1 8.2 8.3 8.4 9. 9.1 9.2 9.3 9.4

Fulltext benchmark / GIN 33k queries from postgresql.org [TOP 1] 8 7 6 total runtime [sec] 5 4 3 2 1 8.2 8.3 8.4 9. 9.1 9.2 9.3 9.4

Fulltext benchmark - GiST vs. GIN 33k queries from postgresql.org [TOP 1] 6 total duration [sec] 5 4 3 2 1 8. 8.1 8.2 8.3 8.4 GiST 9. GIN 9.1 9.2 9.3 9.4

Fulltext benchmark / 9.3 vs. 9.4 (GIN fastscan) 9.4 durations, divided by 9.3 durations (e.g..1 means 1x speedup) 9.4 duration (relative to 9.3) 1.8 1.6 1.4 1.2 1.8.6.4.2.1 1 1 1 duration on 9.3 [miliseconds, log scale] 1

Fulltext / shrnutí GIN fastscan dotazy kombinující časté & vzácné 9.4 skenuje vzácné seznam první exponenciální zrychlení pro tyto dotazy... to je celkem fajn ;-) jenom ~5% dotazů se zpomalilo víceméně dotazy pod 1ms (chyby měření)