Successfully reported this slideshow.
Your SlideShare is downloading. ×

SSD vs HDD / WAL, indexes and fsync

Ad

SSD vs. HDD / WAL, indexy a fsync
   Prague PostgreSQL Developers Day 2012

            Tomáš Vondra (tv@fuzzy.cz)

Ad

What a great day for science!

Ad

Otázky

    DB = data + indexy + transakční log (WAL)

●   Co umístit na samostatný disk?
●
    Co patří na HDD a co na SS...

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Loading in …3
×

Check these out next

1 of 48 Ad
1 of 48 Ad

SSD vs HDD / WAL, indexes and fsync

Download to read offline

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)?

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)?

Advertisement
Advertisement

More Related Content

Advertisement

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 TB SSDs (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. Benchmarky OLTP (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. $ / GB HDD (Maxtor DiamondMax 21) ● 500 GB SATA II 7.2k ~ 2000 Kč => 4 Kč / GB SSD (Intel 320) ● 120 GB SATA II ~ 4200 Kč => 40 Kč / GB kombinace (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 = 30 pgbench 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 TA DA 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 TA DA 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. indexy SSD ● výborná investice pro OLTP zátěž (pgbench) ● ne tak dobré pro DWS/DSS-like workload HDD ● OLTP výkon nemůže konkurovat SSD (ani výkon/cena) ● v DWH často zdatně konkuruje SSD kombinace 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 DA DA 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 sd read-only TA -1 =h dd - 2 W AL DA =h dd TA =h - 2 oddělení dat a WAL read-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 DA DA 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 DA DA 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 writes 140 14000 120 12000 100 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 writes 140 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 1400 50 1200 1000 40 800 30 600 20 400 10 200 0 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 en at at en fd _d _d fd op op en en op op archive minimal
  41. 41. fd at as yn 0 100 200 300 400 500 600 700 op 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 yn op 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 ...

×