Ich habe eine WordPress-Site mit mehr als 8000 Posts und jedes Mal, wenn ich eine neue hinzufüge, reagiert die Site nicht mehr. Ich habe das MySQL-Protokoll für langsame Abfragen überprüft und festgestellt, dass es eine Auswahl ausführt, die die meisten Zeilen in der Posts-Tabelle zurückgibt und deren Ausführung viel Zeit in Anspruch nimmt.
Dies ist ein Beispiel:
Query_time: 149.702704
Lock_time: 0.000078
Rows_sent: 4699
Rows_examined: 9398
Rows_affected: 0
Rows_read: 4699
use 488726_wp;
SELECT `ID`, `post_author`, `post_date`, `post_date_gmt`, `post_status`, `post_name`, `post_modified`, `post_modified_gmt`, `post_parent`, `post_type`
FROM `wp_posts`
WHERE ( (post_status = 'publish' AND (post_type = 'post' OR post_type = ''))
OR (post_status = 'publish' AND post_type = 'page') )
AND post_password=''
ORDER BY post_modified DESC;
Wie kann ich die Quelle dieser Abfragen finden?
mysql
performance
holiveira
quelle
quelle
Möglicherweise möchten Sie eine EXPLAIN für die Abfrage wie folgt ausführen:
Dies zeigt, dass das von MySQL verwendete Zugriffsmuster die von Ihnen benötigten Daten sammelt.
Wenn ich jedoch nur die WHERE- und ORDER BY-Klauseln betrachte, möchte ich diesen folgenden Vorschlag machen: Erstellen Sie einen Index, der die Abfrage beschleunigen kann. Da post_status und post_type statische Werte in der Abfrage haben und post_modified eine Sortierreihenfolge für diese beiden Spalten darstellt, versuchen Sie diesen Index bitte:
Versuche es !!!
quelle
Dieses Problem hängt mit dem Google XML Sitemaps-Plugin zusammen. http://wordpress.org/support/topic/plugin-google-xml-sitemaps-performance-issues-on-large-wp_posts-tables
Sie können die Option "Manuelle Sitemap-Erstellung über GET-Anforderung aktivieren" verwenden. Und lösen Sie den Generierungsfortschritt manuell aus.
quelle
Probieren Sie das folgende Plugin " Abfrageoberfläche" aus , mit dem Sie die Abfragen anzeigen und eine Schnittstelle erhalten, über die Sie auch überprüfen können, was die Abfrage nimmt, indem Sie ihre Indizes oder Erklärungen überprüfen.
quelle