Selles väikeses postituses tahaksin hajutada ühe arusaamatuse, mis on seotud AWR andmebaaside analüüsiga, mis töötavad Oracle Exadata. Peaaegu 10 aastat olen pidevalt kokku puutunud küsimusega: milline on Exadata tarkvara panus jõudlusesse? Või uute sõnade kasutamisel: kui palju „ekzadateeritakse” selle või teise andmebaasi tööd?

Sageli antakse sellele õigustatud küsimusele, minu arvates, vale vastus, viidates AWR statistikale. Selles esitatakse süsteemi ootuste meetod, mis tõlgendab reageerimisaega protsessorite tööaja (DB CPU) ja erinevate klasside ooteaegade summana.
Exadata tulekuga on AWR statistikasse ilmunud spetsiifilised süsteemi ootused, mis on seotud Exadata tarkvara toimimisega. Reeglina algavad selliste ootuste nimetused sõnaga "cell" (Exadata salvestusseadme nimetatakse „rakuks”), kõige sagedamini esinevad ootused, mis kannavad kõnekaid nimesid nagu "cell smart table scan", "cell multiblock physical read" ja "cell single block physical read".
Enamikul juhtudel on Exadata ooteaja osa koguvastusest väike, mistõttu nad ei satu isegi jaotisse Top10 Esmased Üritused Kogunemise Aja Järgi (selles osas tuleks neid otsida Foreground Wait Events alt). Me oleme suure vaeva nägemisega leidnud meie klientide seas näite öisest AWR-ist, kus Exadata ooteajad pääsesid Top10 sektsiooni ja nende kogusumma ulatus umbes 5%-ni:
Üritus
Ootamised
Koguaeg Ooteaja Järgi (sekundites)
Keskmine Ootus
% DB aega
Oote Kategooria
DB CPU
115.2K
70.4
SQL*Net rohkem andmeid dblinkilt
670,196
5471.5
8.16ms
3.3
Võrk log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats timeout 30s user haproxy group haproxy daemondefaults log global mode http option httplog option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000frontend http_front bind *:80 stats uri /haproxy?stats default_backend http_backbackend http_back balance roundrobin server server_name1 private_ip1:80 check server server_name2 private_ip2:80 check
cell üksiku ploki füüsiline lugemine
5,661,452
3827.6
676.07us
2.3
Kasutaja I/O
Sync ASM tasakaalu reguleerimine
4,350,012
3481.3
800.30us
2.1
Muu
cell mitme ploki füüsiline lugemine
759,885
2252
2.96ms
1.4
Kasutaja I/O
otsene tee lugemine
374,368
1811.3
4.84ms
1.1
Kasutaja I/O
SQL*Net sõnum dblinkilt
7,983
1725
216.08ms
1.1
Võrk log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats timeout 30s user haproxy group haproxy daemondefaults log global mode http option httplog option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000frontend http_front bind *:80 stats uri /haproxy?stats default_backend http_backbackend http_back balance roundrobin server server_name1 private_ip1:80 check server server_name2 private_ip2:80 check
cell nutikas tabeli skaneerimine
1,007,520
1260.7
1.25ms
0.8
Kasutaja I/O
otsene tee lugemine temp
520,211
808.4
1.55ms
0.5
Kasutaja I/O
enq: TM — konkureerimine
652
795.8
1220.55ms
0.5
Application
Sellest AWR statistikast tehakse sageli järgmised järeldused:
1. Exadata maagia panus andmebaasi jõudluses ei ole kõrge — ei ületa 5%, ja andmebaas "ekzadatiseerub" halvasti.
2. Kui selline andmebaas kanda Exadatast klassikalisse arhitektuuri «server + salvestus», ei muutu jõudlus oluliselt. Isegi kui see salvestusseade osutub kolm korda aeglasemaks kui Exadata salvestussüsteem (mida on kahtlane, et kaasaegsete All Flash salvestusseadmete puhul juhtuks), siis kui korrutada 5% kolme võrra, saame me IO-ooteosa tõusuks 15% — sellise koormusega suudab andmebaas kindlasti hakkama saada!
Mõlemad need järeldused on ebatäpsed, veelgi enam, need moonutavad arusaama Exadata tarkvara ideest. Exadata ei paku mitte ainult kiiret IO-d, vaid toimib põhimõtteliselt täiesti erinevalt võrreldes klassikalise arhitektuuriga «server + salvestus». Kui andmebaas tõeliselt «exadatiseerub» — siis kantakse SQL-loogika salvestusseadmest. Storage serverid tänu rida spetsiaalsetele mehhanismidele (eelkõige Exadata salvestuse indeksid, kuid mitte ainult) leiavad nad vajalikud andmed ja edastavad need DB serveritele. Nad suudavad seda teha piisavalt tõhusalt, seega on Exadata iseloomulike ootuste osakaal üldises vastuse ajas väike.
Kuidas see osa Exadata-st väljaspool muutub? Kuidas see mõjutab kogu andmebaasi jõudlust? Parimad vastused nendele küsimustele annab testimine. Näiteks väline ootus 'cell smart table scan' võib muutuda nii raskeks table full scan'iks, et sisendi ja väljundi töötlemine võtab kogu reageerimisaega ja jõudlus halveneb dramaatiliselt. Just seetõttu on vale analüüsida AWR-i andmeid, pidades Exadata oote kogusummat kui osa selle maagilisest jõudlusest ning kindlasti ei tohiks seda protsenti kasutada jõudluse prognoosimiseks väljaspool Exadata. Et mõista, kui palju on andmebaas 'ekzadatiseeritud', tuleb uurida AWR-i sektsiooni 'Instance Activity Stats' statistikat (seal on palju statistikat kõnekate nimedega) ja võrrelda neid omavahel.
Ja et mõista, kuidas andmebaas väljaspool Exadata ennast tunneb, on kõige parem luua varukoopiast klon sihtarhitektuuril ja analüüsida selle kloni jõudlust koormuse all. Selline võimalus on Exadata omanikel tavaliselt olemas.
Autor: Alekséi Strutšenko, andmebaaside valdkonna juht 'Infosüsteemid Jet'
Allikas: habr.com
