Comparazione delle prestazioni del RQG

Test delle prestazioni

performance/perfrun.pl esegue tutte le query su un dato insieme di server tw e mostra i risultati.

perl performance/perfrun.pl --input-directory=... --dsn1=... --dsn2=... --output-file=... --filter=...
  • --input-directory contiene le query da eseguire, una query per ogni file. I futuro vi saranno altre fonti per le query;
  • --dsn1 e --dsn2 specificano dove si trovano i due server da comparare, nel formato degli URL di Perl DBI. Se le query non sono pienamente qualificate, il formato del DSN deve contenere il nome del database. Anche il nome utente e la password sono forniti via DSN. Per esempio:
--dsn1=dbi:mysql:host=127.0.0.1:port=19300:user=root:database=test \
--dsn2=dbi:mysql:host=127.0.0.1:port=19302:user=root:database=test
  • --output-file=... specifica un file dove le query corrispondenti verranno scritte in una forma che sia adatta a filtrarle successivamente con perfreport
  • Se --filter non è specificato, tutte le query dell'input verranno stampate;

Visualizzazione delle performance

Lo script performance/perfreport.pl prende un file di ouput creato da perfrun e stampa i suoi contenuti, eventualmente applicando un filtro nel processo:

perl performance/perfreport.pl --input-file=... --filter=...

Se --filter non è specificato, tutte le query dell'input verranno stampate.

Filtri

Le query riportate dal sistema possono essere filtrate utilizzando le espressioni regolati basate su Perl. Un filtro può essere applicato durante la fase di raccolta dei dati, e questo determina quali informazioni vengono registrate nel file di output.

Se non si specifica alcun filtro, vengono stampate tutte le query.

Le seguenti variabili possono partecipare al filtraggio:

  • Le variabili prese da SHOW SESSION STATUS, eccetto:
    • quelle che non vengono reimpostate all'inizio della query, comprese Com_*, Uptime, Opened_filese simili;
    • quelle relative alla crittografia SSL o alla cache delle query;
  • Variabili prese da SHOW GLOBAL STATUS LIKE 'Innodb_%'

Ad ogni variabile di stato di MySQL corrispondono 4 variabili Perl il valore della variabile di MySQL in ogni server, le loro differenze assolute e il loro rapporto. Per esempio, per filtrare in Perl la variabile di MySQL Innodb_rows_read, si possono utilizzare Innodb_rows_read1, Innodb_rows_read2, Innodb_rows_read_delta e Innodb_rows_read_ratio.

In aggiunta alle variabili di stato di MySQL, il framework fornisce le seguenti variabili:

  • $Execution_time{1|2|delta|ratio} contiene il tempo di esecuzione della query in secondi. Il valore viene troncato ai millisecondi per prevenire rapporti di prestazioni esorbitanti sulle query molto veloci;
  • $Temperature può avere il valore cold o warm, a seconda che venga effettuata la prima o la seconda esecuzione della query.
  • $Query contiene il testo della query, per permettere un filtraggio del tipo $Query !~ m{l_receiptDATE}

Per esempio, la seguente invocazione da riga di comando:

--filter='($Execution_time1 > 0.1 || $Execution_time2 > 0.1) && $Temperature eq "warm"'

...esegue e stampa soltanto le query che hanno impiegato più di 0.1 secondi su un server "warm".

Formato su schermo

Il formato della visualizzazione ASCII su schermo è il seguente:

Query: SELECT  l_linenumber FROM lineitem  WHERE l_suppkey  IN ( 10 , 1 ) AND l_shipdate NOT IN ( '1993-06-06' , '1998-02-04' , '1992-01-08' ) AND l_linenumber NOT IN ( 8 , 7 ) AND l_quantity <> 3 AND ( l_orderkey NOT IN ( 1298 , 93 ) OR l_suppkey = 10 ) AND ( l_suppkey BETWEEN 4 AND 10 + 4 OR l_linenumber = 2 AND l_commitDATE BETWEEN '1993-06-27' AND '1993-09-05' AND l_linenumber BETWEEN 3 AND 9 + 9 );
Cache: warm
                                    5.3.0-MariaDB-     5.2.6-MariaDB-          Delta              Ratio
-------------------------------------------------------------------------------------------------------
Execution time                               0.011s            0.004s           -0.007s            0.36
Innodb_buffer_pool_read_requests          2171              1836              -335                 0.85
Handler_read_rnd                           583                 0              -583
Handler_read_next                          583               602                19                 1.03
Innodb_rows_read                          1166               602              -564                 0.52

Vengono visualizzate solo le variabili che hanno valori differenti sui due server. In questo esempio, la query è stata eseguita più lentamente su 5.3.0-MariaDB con una cache "warm" e ha richiesto un numero doppio di Innodb_rows_read.

Formato dei dati su disco

Il formato dei dati su disco consiste in oggetti Data::Dumper, racchiusi nei tag <![CDATA[ ... ]]>, senza che il file sia pieno di XML. La rappresentazione serializzata viene creata da GenTest::QueryPerformanceDelta::serialize() e viene letta tramite eval() in performance/perfreport.pl.

Vedi anche

Commenti

Sto caricando i commenti......
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.