Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
SSD vs. HDD / WAL, indexy a fsync   Prague PostgreSQL Developers Day 2012            Tomáš Vondra (tv@fuzzy.cz)
What a great day for science!
Otázky    DB = data + indexy + transakční log (WAL)●   Co umístit na samostatný disk?●    Co patří na HDD a co na SSD?●   ...
Charakteristiky disků7.2k SATA spinners●   ~ 120 IOPS●   sekvenčně: ~ 100 MB/s●   náhodně: ~ 0.5 MB/s●   512B / 4kB sektor...
Consumer-level ...●   jen „obyčejné“ SATA-II disky●   demonstrace obecných I/O charakteristik●   aplikovatelné na srovnate...
BenchmarkyOLTP (pgbench)  ●   hodně „malých“ transakcí (typicky přes primární klíče)  ●   počet transakcí za vteřinu (tps)...
Kdybych měl tolik peněz jako Bruce Wayne ...
Dosahovat výkon za hromady peněz není velké umění.
výkon / cena
výkon / (cena / GB)
$ / GBHDD (Maxtor DiamondMax 21)●   500 GB SATA II 7.2k ~ 2000 Kč => 4 Kč / GBSSD (Intel 320)●   120 GB SATA II ~ 4200 Kč ...
výkon / (cena / GB)pgbench na HDD●   výkon 120 tps●   cena 4 Kč / GB●   metrika = 120 / 4 = 30pgbench na SSD●   výkon 4000...
78,31% všech statistik je vymyšlených
Důležitá jsou vaše čísla!
data vs. indexy
OLTP (pgbench)
pgbench s oddělením dat a indexů              read-only i read-write [tps, vyšší hodnoty jsou lepší]    6000    5000    40...
pgbench s oddělením dat a indexů (80:20)         read-only i read-write [výkon/$, vyšší hodnoty jsou lepší]     160     14...
DSS/DWH (TPC-H)
DA  TA    =s            sd                                               100                                              ...
DA  TA    =s            sd                                      10                                       0                ...
data vs. indexySSD●   výborná investice pro OLTP zátěž (pgbench)●   ne tak dobré pro DWS/DSS-like workloadHDD●   OLTP výko...
data vs. WAL
Write Ahead Log●   aka transakční log    ●   aka XLog    ●        aka REDO●    informace o modifikacích dat●    životně dů...
OLTP (pgbench)
oddělení dat a WAL        pgbench (read-only i read-write) [počet transakcí za vteřinu]     4500     4000     3500     300...
DA                  TA                    =s                         sd                           -2                      ...
data vs. WAL / OLTP●   data – spousta náhodných přístupů => SSD●   WAL – sekvenční zápisy => HDD●   WAL i data na stejném ...
DSS/DWH (TPC-H)
TPC-H benchmark / load     příprava dat (load, apod.) [počet vteřin, nižší hodnoty jsou lepší]         800         700    ...
TPC-H benchmark / load (80:20)         příprava dat (load, apod.) [výkon/$, vyšší hodnoty jsou lepší]        80        70 ...
data vs. WAL / TPC-H setup●   WAL nijak neovlivňuje dotazy●    výkon/$ - pevné disky bezpečně vedou●    nižší výkon <=> ni...
fsync metody
pg_test_fsync●   srovnání chování různých metod fsyncu    ●   fsync / open_sync    ●        fdatasync / open_datasync●    ...
pg_test_fsync / HDD a SSD                           8kB page writes140                                                    ...
pg_test_fsync / HDD a SSD                           8kB page writes140                                                    ...
OLTP (pgbench)
SSD vs. HDD / read-write pgbench          počet transakcí za vteřinu [vyšší hodnoty jsou lepší]60                         ...
DSS/DWH (TPC-H)
TPC-H set-up / load dat             různé fsync metody / wal_level [počet vteřin, nižší hodnoty jsou lepší]     700     60...
fd            at               as                  yn                                 0                                   ...
fsync metody●   značný rozdíl mezi sync a datasync ~ 20%●    open_* - žádný měřitelný efekt●    wal_level = minimal    ●  ...
Cloud?
There’s a rumor that Stewart Smith and  I might do a Q&A about databases in the cloud. If it happens, it will involve     ...
Závěrem ...
Závěrem ...●   přínos SSD závisí na workloadu (OLTP)    ●   pgbench je extrém (zápis:čtení ~ 1:1)●    SSD výrazně více zat...
Každý systém má bottleneck ...
SSD vs HDD / WAL, indexes and fsync
Upcoming SlideShare
Loading in …5
×

SSD vs HDD / WAL, indexes and fsync

1,505 views

Published on

Jaký dopad na výkon má přesun transakčního logu nebo indexů na samostatný disk? Jak výsledek závisí na typu workloadu (OLTP vs. DWH) a na typu disku (HDD vs. SSD)?

Published in: Technology
  • Be the first to comment

SSD vs HDD / WAL, indexes and fsync

  1. 1. SSD vs. HDD / WAL, indexy a fsync Prague PostgreSQL Developers Day 2012 Tomáš Vondra (tv@fuzzy.cz)
  2. 2. What a great day for science!
  3. 3. Otázky DB = data + indexy + transakční log (WAL)● Co umístit na samostatný disk?● Co patří na HDD a co na SSD?● Jakou fsync metodu zvolit?● Jak to závisí na typu zátěže?
  4. 4. Charakteristiky disků7.2k SATA spinners● ~ 120 IOPS● sekvenčně: ~ 100 MB/s● náhodně: ~ 0.5 MB/s● 512B / 4kB sektory, běžně kapacita několik TBSSDs (Intel 320 120GB)● (deseti)tisíce IOPS● čtení: ~ 250 MB/s● zápis: ~ 120 MB/s● 512kB bloky, kapacita desítky / stovky GB
  5. 5. Consumer-level ...● jen „obyčejné“ SATA-II disky● demonstrace obecných I/O charakteristik● aplikovatelné na srovnatelný hw ● 15k SAS disky, podobné SATA SSD disky, …● obtížnější aplikace na ● specializovaná SSD (fusion-io, VeloDrive/Z-Drive, ...) ● RAID pole s dobrým řadičem (write cache) ● výrazně odlišný workload
  6. 6. BenchmarkyOLTP (pgbench) ● hodně „malých“ transakcí (typicky přes primární klíče) ● počet transakcí za vteřinu (tps) ● read-only nebo read-write (50:50, netypický poměr)TPC-H ● velké dotazy nad velkým objemem dat ● počet vteřin (trvání loadu, vyhodnocení dotazu) ● GROUP BY, velké joiny, … (i hodně náhodného I/O) data >> RAM
  7. 7. Kdybych měl tolik peněz jako Bruce Wayne ...
  8. 8. Dosahovat výkon za hromady peněz není velké umění.
  9. 9. výkon / cena
  10. 10. výkon / (cena / GB)
  11. 11. $ / GBHDD (Maxtor DiamondMax 21)● 500 GB SATA II 7.2k ~ 2000 Kč => 4 Kč / GBSSD (Intel 320)● 120 GB SATA II ~ 4200 Kč => 40 Kč / GBkombinace (naivní model)● vážený součet podle objemu (indexy, WAL, data, ...)● 20% HDD + 80% SSD => 33 Kč / GB● 80% HDD + 20% SSD => 11 Kč / GB
  12. 12. výkon / (cena / GB)pgbench na HDD● výkon 120 tps● cena 4 Kč / GB● metrika = 120 / 4 = 30pgbench na SSD● výkon 4000 tps● cena 40 Kč / GB● metrika = 4000 / 40 = 100 100 > 30
  13. 13. 78,31% všech statistik je vymyšlených
  14. 14. Důležitá jsou vaše čísla!
  15. 15. data vs. indexy
  16. 16. OLTP (pgbench)
  17. 17. pgbench s oddělením dat a indexů read-only i read-write [tps, vyšší hodnoty jsou lepší] 6000 5000 4000 3000 2000 1000 0 1 -1 -2 -1 2 1 d- d- d- sd sd sd hd hd hd s s s X= X= X= X= X= X= ID ID ID ID ID ID 2 -2 -2 -2 2 2 - - - dd sd sd sd dd dd =s =s =h =s =h =h TA TA TA TA TA TADA DA DA DA DA DA read-only read-write
  18. 18. pgbench s oddělením dat a indexů (80:20) read-only i read-write [výkon/$, vyšší hodnoty jsou lepší] 160 140 120 100 80 60 40 20 0 1 -1 -2 -1 2 1 d- d- d- sd sd sd hd hd hd s s s X= X= X= X= X= X= ID ID ID ID ID ID 2 -2 -2 -2 2 2 - - - dd sd sd sd dd dd =s =s =h =s =h =h TA TA TA TA TA TADA DA DA DA DA DA read-only read-write
  19. 19. DSS/DWH (TPC-H)
  20. 20. DA TA =s sd 100 150 200 250 300 50 0 -2 ID X=DA s sd TA -2 =s sd -2 ID X=DA hd d- TA 1 =s sd -2 ID X=DA s sd TA -1 =h dd - 2 ID X=DA hd TA d- =h 2 dd - 2 TPC-H výkon / dotaz č. 17 ID X=DA hd d- TA =h 1 dd - počet vteřin na vyhodnocení [nižší hodnoty jsou lepší] 2 ID X= s sd -1
  21. 21. DA TA =s sd 10 0 1 2 3 4 5 6 7 8 9 -2 ID X=DA s sd TA -2 =s sd -2 ID X=DA hd d- TA 1 =s sd -2 ID X=DA s sd TA -1 =h dd - 2 ID X=DA hd TA d- =h 2 dd - 2 ID výkon / $ [vyšší hodnoty jsou lepší] X=DA hd TPC-H výkon / dotaz č. 17 (80:20) d- TA =h 1 dd - 2 ID X= s sd -1
  22. 22. data vs. indexySSD● výborná investice pro OLTP zátěž (pgbench)● ne tak dobré pro DWS/DSS-like workloadHDD● OLTP výkon nemůže konkurovat SSD (ani výkon/cena)● v DWH často zdatně konkuruje SSDkombinace SSD a HDD● nic moc (když musíte, tak na SSD dejte data)
  23. 23. data vs. WAL
  24. 24. Write Ahead Log● aka transakční log ● aka XLog ● aka REDO● informace o modifikacích dat● životně důležité pro recovery● při dotazování se nepoužívá
  25. 25. OLTP (pgbench)
  26. 26. oddělení dat a WAL pgbench (read-only i read-write) [počet transakcí za vteřinu] 4500 4000 3500 3000 2500 2000 1500 1000 500 0 1 -1 -1 -2 2 1 - - - dd sd dd dd sd sd =s =s =s =h =h =h AL AL AL AL AL AL W W W W W W 2 -2 -2 -2 2 2 - - - dd sd sd sd dd dd =s =s =h =s =h =h TA TA TA TA TA TA DA DADA DA DA DA read-only read-write
  27. 27. DA TA =s sd -2 100 120 140 20 40 60 80 0 W AL =h DA dd TA - 1 =s sd -2 W AL DA =s sd TA -2 =s sd -2 W AL DA =s sdread-only TA -1 =h dd - 2 W AL DA =h dd TA =h - 2 oddělení dat a WALread-write dd - 2 W AL DA =h dd - pgbench (read-only i read-write) [výkon/$] TA =h 1 dd - 2 W AL =s sd -1
  28. 28. data vs. WAL / OLTP● data – spousta náhodných přístupů => SSD● WAL – sekvenční zápisy => HDD● WAL i data na stejném disku => terror :-( ● databáze musí seekovat (přístup k datům) ● důsledek: zápisy do WAL pak nejsou sekvenční● skvělá je kombinace data na SSD a WAL na HDD ● rozdíl vs. SSD+SSD ~ rychlost sekvenčního zápisu (HDD má jen 70 MB/s, SSD má 130 MB/s) ● s rychlejším HDD diskem (RAID) => asi ideál :-)
  29. 29. DSS/DWH (TPC-H)
  30. 30. TPC-H benchmark / load příprava dat (load, apod.) [počet vteřin, nižší hodnoty jsou lepší] 800 700 600 500 400 300 200 100 0 -2 -1 1 2 1 -1 - - - sd sd dd dd sd dd =s =s =s =h =h =h AL AL AL AL AL AL W W W W W W -2 -2 2 2 2 -2 - - - sd sd dd dd dd sd =s =s =h =s =h =h TA TA TA TA TA TA DA DADA DA DA DA load primary keys foreign keys index analyze
  31. 31. TPC-H benchmark / load (80:20) příprava dat (load, apod.) [výkon/$, vyšší hodnoty jsou lepší] 80 70 60 50 40 30 20 10 0 -1 1 -2 -1 2 1 - - - dd sd sd dd dd sd =s =s =s =h =h =h AL AL AL AL AL AL W W W W W W -2 -2 2 -2 2 2 - - - sd dd sd sd dd dd =s =s =h =s =h =h TA TA TA TA TA TA DA DADA DA DA DA load primary keys foreign keys index analyze
  32. 32. data vs. WAL / TPC-H setup● WAL nijak neovlivňuje dotazy● výkon/$ - pevné disky bezpečně vedou● nižší výkon <=> nižší sekvenční rychlost● rychlejší HDD => výkon srovnatelný se SSD
  33. 33. fsync metody
  34. 34. pg_test_fsync● srovnání chování různých metod fsyncu ● fsync / open_sync ● fdatasync / open_datasync● podpora závisí na ● souborovém systému, verzi kernelu, …● vztah na „direct I/O“ ● standardně „write + write + … + fsync“ (fs cache) ● obcházení page cache (ne vždy užitečná - řadiče)
  35. 35. pg_test_fsync / HDD a SSD 8kB page writes140 14000120 12000100 10000 80 8000 60 6000 40 4000 20 2000 0 0 fdatasync open_datasync fsync open_sync HDD SSD
  36. 36. pg_test_fsync / HDD a SSD 8kB page writes140 14000 7%120 12000 7%100 10000 80 8000 60 6000 40 4000 20 2000 0 0 fdatasync open_datasync fsync open_sync HDD SSD
  37. 37. OLTP (pgbench)
  38. 38. SSD vs. HDD / read-write pgbench počet transakcí za vteřinu [vyšší hodnoty jsou lepší]60 140050 1200 100040 80030 60020 40010 2000 0 fdatasync open_datasync fsync open_sync hdd ssd
  39. 39. DSS/DWH (TPC-H)
  40. 40. TPC-H set-up / load dat různé fsync metody / wal_level [počet vteřin, nižší hodnoty jsou lepší] 700 600 500 400 300 200 100 0 -2 -2 -2 -2 -2 -2 -2 -2 dd dd dd dd sd sd sd sd /s /s /s /s /h /h /h /h c c c c c c c c yn yn yn yn yn yn yn yn as as fs _s as as fs _s at at enat at en fd _d _dfd op op en en op op archive minimal
  41. 41. fd at as yn 0 100 200 300 400 500 600 700op c en /h _d dd at -2 as yn c /h dd -2 fs yn c /h op dd en -2 _s yn c /h fd dd at -2 as ynop c en /s _d sd at -2 as yn c /s TPC-H set-up / load dat sd -2 fs yn c /s op sd en -2 _s yn c různé fsync metody / wal_level [počet vteřin, nižší hodnoty jsou lepší] /s sd -2
  42. 42. fsync metody● značný rozdíl mezi sync a datasync ~ 20%● open_* - žádný měřitelný efekt● wal_level = minimal ● cca 30% zrychlení při loadu dat ● pokud nepotřebujete „archive“
  43. 43. Cloud?
  44. 44. There’s a rumor that Stewart Smith and I might do a Q&A about databases in the cloud. If it happens, it will involve lots of pessimism and swearing. Selena Deckelmann http://chesnok.com
  45. 45. Závěrem ...
  46. 46. Závěrem ...● přínos SSD závisí na workloadu (OLTP) ● pgbench je extrém (zápis:čtení ~ 1:1)● SSD výrazně více zatěžují CPU než HDD● spolehlivost SSD je otázka● HDD i SSD se skládají z „bloků“ ● HDD mají plotny, SSD mají moduly (např. 40 GB) ● více „bloků“ => vyšší sekvenční výkon● rychlejší disky (15k SAS) – horší cena/výkon
  47. 47. Každý systém má bottleneck ...

×