Analysieren Sie die Probleme der SQL-Anweisungseffizienzoptimierung beim Lesen, Schreiben, Indizieren und anderen Vorgängen in MySQL-Tabellen

Analysieren Sie die Probleme der SQL-Anweisungseffizienzoptimierung beim Lesen, Schreiben, Indizieren und anderen Vorgängen in MySQL-Tabellen

Letztes Mal haben wir über einige SQL-Abfrageoptimierungen in MySQL gesprochen, darunter die Anzeige des Ausführungsplans, die Analyse von Indizes usw. Heute teilen wir einige SQL-Anweisungen zum Analysieren des Lesens, Schreibens, Indizierens und anderer Vorgänge in MySQL-Tabellen.

Kommen wir ohne weitere Umschweife direkt zum Code:

Spiegelt den Lese- und Schreibdruck der Tabelle wider

SELECT Dateiname AS Datei,
    Anzahl der Lesevorgänge,
    Summe der gelesenen Bytes AS Gesamtlesung,
    zählen_schreiben,
    Summe_Anzahl_der_geschriebenen_Bytes AS total_written,
    (Summe der gelesenen Bytes + Summe der geschriebenen Bytes) AS gesamt
 VON performance_schema.file_summary_by_instance
ORDER BY Summe_Anzahl_der_gelesenen_Bytes+ Summe_Anzahl_der_geschriebenen_Bytes DESC;

Verzögerung bei der Wiedergabe von Dateien

SELECT (Dateiname) AS-Datei,
    count_star AS insgesamt,
    CONCAT(ROUND(Summe_Wartezeit / 3600000000000000, 2), 'h') AS Gesamtlatenz,
    Anzahl der Lesevorgänge,
    CONCAT(ROUND(Summe_Timer_Read / 1000000000000, 2), 's') AS Leselatenz,
    zählen_schreiben,
    CONCAT(ROUND(Summe_Timer_Schreiben / 3600000000000000, 2), 'h') AS Schreiblatenz
 VON performance_schema.file_summary_by_instance
ORDER BY sum_timer_wait DESC;

Latenz beim Lesen und Schreiben von Tabellen

SELECT Objektschema AS Tabellenschema,
       Objektname AS Tabellenname,
       count_star AS insgesamt,
       CONCAT(ROUND(sum_timer_wait / 3600000000000000, 2), 'h') als Gesamtlatenz,
       CONCAT(ROUND((sum_timer_wait / count_star) / 1000000, 2), 'us') AS avg_latency,
       CONCAT(ROUND(max_timer_wait / 1000000000, 2), 'ms') AS max_latency
 VON performance_schema.objects_summary_global_by_type
    ORDER BY sum_timer_wait DESC;

Tabelle mit Betriebshäufigkeit anzeigen

SELECT Objektschema AS Tabellenschema,
      Objektname AS Tabellenname,
      count_star AS rows_io_total,
      Anzahl_gelesener Zeilen als gelesene Zeilen,
      count_write AS rows_write,
      count_fetch AS rows_fetchs,
      count_insert AS rows_inserts,
      count_update AS rows_updates,
      count_delete AS rows_deletes,
       CONCAT(ROUND(Summe_Timer_Fetch / 3600000000000000, 2), 'h') AS Fetch_Latenz,
       CONCAT(ROUND(sum_timer_insert / 3600000000000000, 2), 'h') AS insert_latency,
       CONCAT(ROUND(Summe_Timer_Update / 3600000000000000, 2), 'h') AS Update_Latenz,
       CONCAT(ROUND(Summe_Timer_Löschen / 3600000000000000, 2), 'h') AS Löschlatenz
   VON performance_schema.table_io_waits_summary_by_table
    BESTELLE NACH sum_timer_wait DESC;

Indexstatus

Wählen Sie OBJECT_SCHEMA AS table_schema,
        OBJECT_NAME AS Tabellenname,
        INDEX_NAME als Indexname,
        COUNT_FETCH AS abgerufene Zeilen,
        CONCAT(ROUND(SUM_TIMER_FETCH / 3600000000000000, 2), 'h') AS select_latency,
        COUNT_INSERT AS rows_inserted,
        CONCAT(ROUND(SUM_TIMER_INSERT / 3600000000000000, 2), 'h') AS insert_latency,
        COUNT_UPDATE AS Zeilen_aktualisiert,
        CONCAT(ROUND(SUM_TIMER_UPDATE / 3600000000000000, 2), 'h') AS update_latency,
        COUNT_DELETE AS gelöschte Zeilen,
        CONCAT(ROUND(SUM_TIMER_DELETE / 3600000000000000, 2), 'h') AS delete_latency
VON performance_schema.table_io_waits_summary_by_index_usage
Wobei Indexname nicht NULL ist
ORDER BY sum_timer_wait DESC;

Vollständiger Tabellenscan

SELECT Objektschema,
    Objektname,
    Anzahl der gelesenen Zeilen als vollständig gescannt
 VON performance_schema.table_io_waits_summary_by_index_usage
WHERE index_name IS NULL
  UND Anzahl der gelesenen Daten > 0
ORDER BY Anzahl_Lesen DESC;

Unbenutzter Index

SELECT Objektschema,
    Objektname,
    Indexname
  VON performance_schema.table_io_waits_summary_by_index_usage
 Wobei Indexname nicht NULL ist
  UND count_star = 0
  UND Objektschema nicht in ('mysql', 'v_monitor')
  UND Indexname <> 'PRIMARY'
 ORDER BY Objektschema, Objektname;

Zusammenfassung der fehlerhaften SQL-Probleme

SELECT (DIGEST_TEXT) AS-Abfrage,
    SCHEMA_NAME AS db,
    WENN (SUM_NO_GOOD_INDEX_USED > 0 ODER SUM_NO_INDEX_USED > 0, '*', '') ALS full_scan,
    COUNT_STAR AS exec_count,
    SUM_ERRORS AS err_count,
    SUM_WARNINGS AS warn_count,
    (SUM_TIMER_WAIT) AS Gesamtlatenz,
    (MAX_TIMER_WAIT) AS max_latency,
    (AVG_TIMER_WAIT) AS avg_latency,
    (SUM_LOCK_TIME) AS Sperrlatenz,
    format(SUM_ROWS_SENT,0) AS rows_sent,
    RUNDEN(WENNNULL(SUM_ROWS_SENT / NULLWENN(ANZAHL_STAR, 0), 0)) AS rows_sent_avg,
    SUM_ROWS_EXAMINED AS Zeilen_untersucht,
    RUNDEN(WENNNULL(SUMME_UNTERSUCHTE_ZEILEN / NULLWENN(ANZAHL_STAR, 0), 0)) ALS Durchschnitt_untersuchter_Zeilen,
    SUM_CREATED_TMP_TABLES AS tmp_tables,
    SUM_CREATED_TMP_DISK_TABLES AS tmp_disk_tables,
    SUM_SORT_ROWS AS rows_sorted,
    SUM_SORT_MERGE_PASSES AS sort_merge_passes,
    DIGEST AS Digest,
    ERSTES_GESEHEN ALS erstes_gesehen,
    LAST_SEEN als zuletzt gesehen
  VON performance_schema.events_statements_summary_by_digest d
wobei d
ORDER BY SUM_TIMER_WAIT DESC
Grenze 20;

Wenn Sie diese SQL-Anweisungen beherrschen, können Sie leicht erkennen, welche Tabellen in Ihrer Datenbank Probleme aufweisen, und dann überlegen, wie Sie diese optimieren können.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • Eine kurze Erläuterung von 30 gängigen Methoden zur Optimierung von SQL-Abfragen in MySQL
  • MySQL fragt den aktuellsten Datensatz der SQL-Anweisung ab (Optimierung)
  • 10 SQL-Anweisungsoptimierungstechniken zur Verbesserung der MySQL-Abfrageeffizienz
  • 10 Tipps zur Optimierung von MySQL SQL-Anweisungen
  • Detaillierte Erläuterung der MySQL SQL-Anweisungsanalyse und Abfrageoptimierung
  • Tipps zur Optimierung von MySQL SQL-Anweisungen
  • MySQL-Optimierung: So schreiben Sie hochwertige SQL-Anweisungen
  • 19 gängige und effektive Methoden zur MySQL-Optimierung (empfohlen!)

<<:  Detailliertes Tutorial zur automatischen Installation von CentOS7.6 mit PXE

>>:  Analyse des Ereignisschleifenmechanismus von js

Artikel empfehlen

Analyse und Lösung des beim Start von MySQL gemeldeten Fehlers „ERROR:2002“

Vorwort Dieser Artikel stellt hauptsächlich die A...

VUE implementiert Saugknopf an der Unterseite

In diesem Artikelbeispiel wird der spezifische Co...

Detailliertes Installationstutorial für die MySQL-Zip-Archivversion (5.7.19)

1. Laden Sie die Zip-Archivversion von der offizi...

Implementierung der Einzelprozesssteuerung des Linux C-Hintergrunddienstprogramms

einführen Normalerweise muss ein Hintergrundserve...

So erstellen Sie einen Pod in Kubernetes

Inhaltsverzeichnis Wie erstelle ich einen Pod? We...

Detaillierte Erläuterung des MySQL InnoDB-Sekundärindex-Sortierbeispiels

Sortierproblem Ich habe kürzlich auf Geek Time „4...

Hinweise zum Import, Export und zur Migration von MySQL Billions of Data

Ich habe in letzter Zeit viele MySQL-Notizen gema...

CentOS 6 verwendet Docker zum Bereitstellen eines Zookeeper-Betriebsbeispiels

Dieser Artikel beschreibt, wie man mit Docker Zoo...