„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum sind meine „SELECT COUNT(*)“-Abfragen in der Tabelle „change_event“ so langsam?

Warum sind meine „SELECT COUNT(*)“-Abfragen in der Tabelle „change_event“ so langsam?

Veröffentlicht am 18.11.2024
Durchsuche:844

Why are my \

Bekämpfung langsamer „SELECT COUNT(*)“-Abfragen in MySQL

Ihre Abfrage in der Tabelle „change_event“, wobei Zeilen gezählt werden, die eine bestimmte change_event_id überschreiten kommt es zu erheblichen Verzögerungen. Aber warum? Schauen wir uns die möglichen Ursachen genauer an.

Das Verhalten von InnoDB enthüllen

Die InnoDB-Engine von MySQL verwendet geclusterte Primärschlüssel, was bedeutet, dass der Primärschlüssel neben den Zeilendaten auf Datenseiten gespeichert wird als separate Indexseiten. Daher müssen bei Bereichsscans wie Ihrem alle potenziell breiten Zeilen in Datenseiten gescannt werden. Dieser Faktor wird durch die Spalte xml_diff der Tabelle, einen TEXT-Datentyp, der die Verarbeitung weiter verlangsamt, noch verschärft.

Optimierungsstrategien

Um die Abfrage zu beschleunigen, sind zwei Ansätze eine Überlegung wert :

  • Tabelle optimieren: Dieser Befehl organisiert Datenseiten in sortierter Reihenfolge und verbessert möglicherweise die Effizienz von Bereichsscans.
  • Zusätzlichen Index erstellen: Wenn Sie einen nicht-primären Index ausschließlich für die Spalte „change_event_id“ einrichten, wird eine Kopie dieser Spalte auf den Indexseiten erstellt. Dieser Index kann erheblich schneller gescannt werden als Datenseiten. Überprüfen Sie den EXPLAIN-Plan nach der Erstellung, um seine Nutzung zu bestätigen.

Zusätzlicher Tipp:

Um die Leistung weiter zu verbessern, sollten Sie die Spalte „change_event_id“ in „bigint unsigned“ ändern. Dieser Schritt verhindert negative Werte und kann auch die Verarbeitung rationalisieren.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3