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?
●   Jakou fsync metodu zvolit?
●
    Jak to závisí na typu zátěže?
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
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
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
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)
$ / 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
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
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

    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
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
DSS/DWH (TPC-H)
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
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
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)
data vs. WAL
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á
OLTP (pgbench)
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
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
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 :-)
DSS/DWH (TPC-H)
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
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
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
fsync metody
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)
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
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
OLTP (pgbench)
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
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
     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
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
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“
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
     lots of pessimism and swearing.

          Selena Deckelmann

            http://chesnok.com
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ěž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
Každý systém má bottleneck ...

SSD vs HDD / WAL, indexes and fsync

  • 1.
    SSD vs. HDD/ WAL, indexy a fsync Prague PostgreSQL Developers Day 2012 Tomáš Vondra (tv@fuzzy.cz)
  • 2.
    What a greatday for science!
  • 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.
    Charakteristiky disků 7.2k SATAspinners ● ~ 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.
    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.
    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.
    Kdybych měl tolikpeněz jako Bruce Wayne ...
  • 8.
    Dosahovat výkon zahromady peněz není velké umění.
  • 9.
  • 10.
  • 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.
    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.
    78,31% všech statistikje vymyšlených
  • 14.
  • 15.
  • 16.
  • 17.
    pgbench s oddělenímdat 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.
    pgbench s oddělenímdat 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.
  • 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.
    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.
    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.
  • 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.
  • 26.
    oddělení dat aWAL 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.
    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.
    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.
  • 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.
    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.
    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.
  • 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.
    pg_test_fsync / HDDa 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.
    pg_test_fsync / HDDa 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.
  • 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.
  • 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.
    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
  • 43.
    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“
  • 44.
  • 45.
    There’s a rumorthat 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
  • 46.
  • 47.
    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
  • 48.
    Každý systém mábottleneck ...