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)?
T
Tomas VondraSoftware developer, Consultant at 2ndQuadrant
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?
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
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. 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
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)
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á
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. 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 :-)
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
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“
45. 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
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