AWR: quanto è 'exadatizzata' l'attività del database?

Con questo breve post vorrei fugare un malinteso riguardante l'analisi AWR dei database che operano su Oracle Exadata. Da quasi 10 anni mi trovo costantemente di fronte alla domanda: qual è il contributo del software Exadata alle prestazioni? O, usando termini creativi: quanto è "exadatizzato" il lavoro di un certo database?

AWR: quanto è 'exadatizzata' l'attività del database?

Spesso a questa domanda corretta, a mio avviso, viene data una risposta errata basata sulle statistiche AWR. Queste presentano un metodo di attesa sistemica che interpreta il tempo di risposta come la somma del tempo di lavoro dei processori (DB CPU) e il tempo di attesa di varie classi.

Con l'arrivo di Exadata, nelle statistiche AWR sono emerse attese sistemiche specifiche legate al funzionamento del software Exadata. Di norma, i nomi di tali attese iniziano con la parola "cell" (il server di storage Exadata è denominato così), e quelle più comuni sono le attese con nomi esplicativi come "cell smart table scan", "cell multiblock physical read" e "cell single block physical read".

Nella maggior parte dei casi, la quota di tali attese Exadata nel tempo di risposta totale è bassa, e quindi non compare nemmeno nella sezione Top10 Foreground Events by Total Wait Time (in questo caso, occorre cercarle nella sezione Foreground Wait Events). Abbiamo faticato a trovare un esempio di AWR giornaliero tra i nostri clienti in cui le attese Exadata figurassero nella sezione Top10 e ammontassero a circa il 5%:

Evento

Attese

Tempo Totale di Attesa (sec)

Attesa Media

% Tempo DB

Classe di Attesa

DB CPU

115.2K

70.4

SQL*Net più dati da dblink

670,196

5471.5

8.16ms

3.3

Network 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 single block physical read

5,661,452

3827.6

676.07us

2.3

User I/O

Sync ASM rebalance

4,350,012

3481.3

800.30us

2.1

Altro

cell multiblock physical read

759,885

2252

2.96ms

1.4

User I/O

direct path read

374,368

1811.3

4.84ms

1.1

User I/O

SQL*Net messaggio da dblink

7,983

1725

216.08ms

1.1

Network 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 smart table scan

1,007,520

1260.7

1.25ms

0.8

User I/O

direct path read temp

520,211

808.4

1.55ms

0.5

User I/O

enq: TM — contenzione

652

795.8

1220.55ms

0.5

Application

Da tali statistiche AWR si traggono spesso le seguenti conclusioni:

1. Il contributo della magia di Exadata alle prestazioni del database non è alto — non supera il 5%, e il database è "exadatizzato" male.

2. Se si trasferisce un tale database da Exadata a un'architettura classica "server + array", le prestazioni non cambieranno molto. Perché anche se questo array risultasse tre volte più lento del sistema di storage Exadata (il che è difficile per gli attuali array All Flash), moltiplicando il 5% per tre si otterrebbe un aumento della quota di attese I/O fino al 15% — un tale database sicuramente lo sopporterebbe!

Entrambe queste conclusioni sono imprecise e, anzi, distorcono la comprensione dell'idea alla base del software Exadata. Exadata non offre solo un input-output rapido, ma funziona in modo fondamentalmente diverso rispetto all'architettura classica "server + array". Se il lavoro del database è davvero "exadatizzato" — allora la logica SQL viene trasferita al sistema di storage. server Lo Storage, grazie a una serie di meccanismi speciali (in primo luogo gli Exadata Storage Indexes, ma non solo), trova autonomamente i dati necessari e li invia ai server DB. Lo fa in modo piuttosto efficiente, quindi la quota di attese Exadata caratteristiche nel tempo di risposta totale è bassa. 

Come cambierà questa quota al di fuori di Exadata? Come influirà sulle prestazioni del database nel suo complesso? La cosa migliore per rispondere a queste domande è eseguire dei test. Ad esempio, l'attesa "cell smart table scan" al di fuori di Exadata può trasformarsi in un costoso Table Full Scan, tanto che l'input-output occupa tutto il tempo di risposta e le prestazioni peggiorano drammaticamente. Proprio per questo non è corretto, nell'analisi AWR, considerare la percentuale totale di attese Exadata come un contributo della sua magia alle prestazioni e tanto meno usare questa percentuale per prevedere le prestazioni al di fuori di Exadata. Per capire quanto sia "exadatizzato" il lavoro di un database, è necessario esaminare le statistiche AWR della sezione "Instance Activity Stats" (lì ci sono molte statistiche con nomi esplicativi) e confrontarle fra loro.

E per capire come si comporterà il database al di fuori di Exadata, la cosa migliore è effettuare un clone del database dalla backup sull'architettura target e analizzare le prestazioni di questo clone sotto carico. Questa opportunità è di solito disponibile per chi possiede Exadata.

Autore: Aleksey Struchenko, responsabile del settore DB «Infosystem Jet»

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster