A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  Sonderzeichen  sybase-tech-blog


Kategorie: Server Programme: Performance und Tuning

Query Processing Metrics, QP Metrics, Query Metrics

Die Query Processing Metrics oder einfach nur QP Metrics ist ein mit ASE Version 15.0 neu eingeführtes feature.

QP Metrics erkennt und vergleicht empirisch ermittelte metrische Werte beim Absetzen einer ad-hoc Query oder einer Stored Procedure.

Mit der Query Processing Metrics lassen sich...

  • die Performance einer Query messen.
  • Informationen über logische I/O Schreibvorgänge (logical I/O reads) ermitteln.
  • Informationen über physikalische I/O Schreibvorgänge (physical I/O reads) ermitteln.
  • CPU Laufzeiten einer Query in Millisekunden ermitteln.
  • häufig ausgeführte Queries identifizieren. Ermittelt also wie oft eine Query ausgeführt wurde.
  • zählen wie oft eine Query wegen Ressourcenengässen vom Resource Governor unterbrochen wurde.
  • Performance-Engpässe, Bottlenecks erkennen.

Jede Datenbank hält ihre eigenen gesammelten QP Metrics Daten in dem View sysquerymetrics vor. Jeder View wird aus der Tabelle sysqueryplans erstellt, die in jeder Datenbank vorhanden ist. Die Query Processing Metrics ist also eine Erweiterung des Abstract Query Plans und wirkt sich damit nicht negativ auf laufende Überwachungsprozesse der MDA-Tabellen oder der Stored Procedure sp_sysmon aus.

Die Query Processing Metrics kann entweder mit der Stored Procedure

    sp_configure  enable metrics capture , 1
    

auf Serverlevel oder mit

    set metrics_capture on
    

auf Sessionlevel aktiviert werden. Die QP Metrics für ad-hoc abgesetzte Queries werden direkt in die entsprechenden Tabellen geschrieben, während die QP Metrics von Stored Procedures zunächst nur im procedure cache gespeichert werden und erst durch den Aufruf der Stored Procedures sp_metrics 'flush' oder sp_flushmetrics in die Tabellen geschrieben werden. Dabei wird jede Metrics mit drei Werten für Minimum, Maximum und Durchschnitt gespeichert.

Die gesammelten Daten von QP Metrics werden in dem View sysquerymetrics abgelegt und können über ein select Statement abgefragt werden.

Wie man das Statement/die Query mit dem höchsten Ressourcenverbrauch findet

Im Allgemeinen sind die Queries mit dem höchsten  logical I/O ,  physical I/O ,  CPU execution time  oder  elapsed time  die größten Ressourcenverschwender und stellen damit mögliche Tuningkandidaten dar.

Query mit dem höchsten logical I/O Verbrauch finden

    select lio_avg, rtrim(qtext) as sql_query_text from sysquerymetrics order by lio_avg
    

Query mit dem höchsten physical I/O Verbrauch finden

    select pio_avg, rtrim(qtext) as sql_query_text from sysquerymetrics order by pio_avg
    

Query mit der längsten Laufzeit (execution time) finden

    select exec_avg, rtrim(qtext) as sql_query_text from sysquerymetrics order by exec_avg
    

Query finden die am häufigsten ausgeführt werden

    select elap_avg, cnt, rtrim(qtext) as sql_query_text from sysquerymetrics order by cnt
    

Backup der bestehenden QP Metrics / Performance von Queries vergleichen

Insbesondere beim einer Migration auf einen neuen ASE-Server kann es vorkommen, dass die Kunden die Antwortzeiten für Queries als langsamer empfinden, also Performanceeinbusen für bestimmte Query-Statements beklagen. Darum empfiehlt es sich die QP Metrics Daten zu sichern, also ein Backup anzulegen. So kann man nach einem Upgrade direkt die Performance der einzelnen Queries vergleichen. Dazu werden die Daten auf dem alten Server in eine so genannte backup group kopiert. Das wird mit der Stored Procedure

    sp_metrics 'backup', '@gid'
    

gemacht. Wobei '@gid' die Ziffer der backup group darstellt. Also beispielsweise:

    sp_metrics 'backup', '3'
    

Anschließend schaltet man auf dem neuen Server mit

    sp_configure  enable metrics capture , 1
    

die Speicherung der QP Metrics Daten ein.

SQL von verschlüsselten Objekten ermitteln

Achtung: So wie sp_hidetext den Quelltext eines Objekts verschlüsselt, so kann QP Metrics verwendet werden, um sich das SQL eines verschlüsselten Objekts anzeigen zu lassen.

Siehe auch:
dbcc traceon 311,
set metrics_capture,
set plan for show_execio_xml,
set statistics plancost,
sp_configure "enable metrics capture",
sp_configure "metrics lio max",
sp_configure "metrics pio max",
sp_configure "metrics elap max",
sp_configure "metrics exec max" und
Statistics time sowie
Statistics io.