Benutzer-Werkzeuge

Webseiten-Werkzeuge


db:mysql:performance

Performance-Tipps

Bei geringer Anzahl von Datensätzen in einer mySQL-Datenbank bewegt sich die Dauer der Abfragen meist im Millisekunden-Bereich. Wenn in den Tabellen jedoch mehrere Millionen Datensätze gespeichert wurden können die Abfragen auch schon leicht im Sekunden-Bereich liegen. Wenn die Abfragen dann noch mehrere Tabellen berücksichtigt kann es schon mal 30 Sekunden dauern. Bei einem Cronjob und einer Standard max execution time von 90 Sekunden Laufzeit sollte das noch kein Problem darstellen.

Wenn aber eine Ausgabe für einen User vorbereitet wird und dieser auf das Ergebnis wartet sind eine Wartezeit von 30 Sekunden in der Regel unzumutbar. Daher gibt es hier ein paar Tipps, damit die Datenbank-Abfragen wieder schneller werden.

Checkliste für Performance-Optimierung

  1. Alle Datenfelder, die mit der WHERE-Anweisung gesucht werden, einem Index „KEY“ hinzufügen
  2. Beim SELECT auf das Wildcard * verzichten! Stattdessen nur die benötigten Felder explizit angeben. Hintergrund ist, dass der Index bei indizierten Datenbankfeldern nur greift, wenn diese Felder im SELECT angegeben wurden.
  3. Nach Möglichkeit auf Funktion wie z. B. DATE() verzichten, da mySQL sonst vorher die Tabelle temporär dupliziert
  4. Nach Möglichkeit auf ORDER BY und GROUP BY verzichten: Doppelte Einträge lieber durch DISTIINCT vermeiden
  5. Sub-Selects lieber in der Programmiersprache, z. B. PHP lösen anstatt in SQL
  6. Nach dem gleichen Datei-Typen suchen, der auch in der Datenbank angelegt wurde! Wenn z. B. ein UNIX_TIMESTAMP in der Datenbank als STRING angelegt wurde ist die folgende Suche zu vermeiden: …WHERE timestamp = 1584199620. Stattdessen sollte der Timestamp in einfachen Anführungszeichen stehen. Dadaurch sind z. B. beim Tabellen mit 360 Mio. Zeilen eine Zeitersparnis von über 35 Sekunden pro Aufruf möglich!!
db/mysql/performance.txt · Zuletzt geändert: 2020/09/15 11:29 von webproducer