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 :
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.
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