„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 > Tipps zur MySQL-Optimierung

Tipps zur MySQL-Optimierung

Veröffentlicht am 01.11.2024
Durchsuche:898

MySQL Optimize Tips

Datenbankstruktur optimieren

Datengröße optimieren

→ Reduzierung der Datenmenge, die auf die Festplatte geschrieben und von dieser gelesen wird

→ Weniger Hauptspeicher, während deren Inhalte während der Abfrageausführung aktiv verarbeitet werden

→ Ergibt kleinere Indizes, die schneller verarbeitet werden können

Tabellenspalten

  • Verwenden Sie möglichst effiziente (kleinste) Datentypen
  • Spalten nach Möglichkeit als NICHT NULL deklarieren → bessere Nutzung von Indizes und Eliminierung des Mehraufwands für das Testen, ob jeder Wert NULL ist.

Indizes

  • Der Primärindex einer Tabelle sollte so kurz wie möglich sein
  • Erstellen Sie nur die Indizes, die Sie zur Verbesserung der Abfrageleistung benötigen. Indizes eignen sich gut zum Abrufen, verlangsamen jedoch Einfüge- und Aktualisierungsvorgänge.
  • Suche nach einer Kombination von Spalten → Erstellen eines zusammengesetzten Index
  • Die erste Spalte im Index sollte diejenige mit den meisten Duplikaten sein → um eine bessere Komprimierung des Index zu erreichen.

Verknüpfungen

  • Deklarieren Sie Spalten mit identischen Informationen in verschiedenen Tabellen mit identischen Datentypen → demselben Datentyp
  • Spaltennamen einfach halten,

Normalisierung

  • Normalerweise versuchen Sie, alle Daten nicht redundant zu halten
  • Wenn Geschwindigkeit wichtiger ist als Speicherplatz und die Wartungskosten für die Aufbewahrung mehrerer Datenkopien

Datentyp optimieren

  • Für eindeutige IDs oder andere Werte, die entweder als Zeichenfolgen oder als Zahlen dargestellt werden können, können → numerische Werte in weniger Bytes als die entsprechenden Zeichenfolgen gespeichert werden, schneller und benötigen weniger Speicher für die Übertragung und den Vergleich.
  • Wenn Sie Werte aus verschiedenen Spalten vergleichen, deklarieren Sie diese Spalten nach Möglichkeit mit demselben Zeichensatz und derselben Sortierung → Vermeiden Sie String-Konvertierungen
  • Für Spaltenwerte mit einer Größe von weniger als 8 KB verwenden Sie das binäre VARCHAR anstelle von BLOB. Die Klauseln „GROUP BY“ und „ORDER BY“ können temporäre Tabellen generieren, und diese temporären Tabellen können die Speicher-Engine „MEMORY“ verwenden, wenn die Originaltabelle keine BLOB-Spalten enthält.
  • Wenn eine Tabelle Zeichenfolgenspalten enthält und nicht häufig darauf zugegriffen wird → in eine andere Tabelle aufteilen und verbinden → Wenn MySQL einen Wert aus einer Zeile abruft, liest es einen Datenblock, der alle Spalten dieser Zeile (und möglicherweise anderer angrenzender Zeilen) enthält. Indem Sie jede Zeile klein halten und nur die am häufigsten verwendeten Spalten verwenden, können mehr Zeilen in jeden Datenblock passen.
  • Wenn Sie einen zufällig generierten Wert als Primärschlüssel in einer InnoDB-Tabelle verwenden, stellen Sie ihm nach Möglichkeit einen aufsteigenden Wert wie das aktuelle Datum und die aktuelle Uhrzeit voran.
  • Um bei einer Tabelle mit mehreren Spalten den Speicherbedarf für Abfragen zu reduzieren, die die BLOB-Spalte nicht verwenden, sollten Sie erwägen, die BLOB-Spalte in eine separate Tabelle aufzuteilen und bei Bedarf mit einer Join-Abfrage darauf zu verweisen.
  • • Da sich die Leistungsanforderungen zum Abrufen und Anzeigen eines BLOB-Werts stark von denen anderer Datentypen unterscheiden können, können Sie die BLOB-spezifische Tabelle auf einem anderen Speichergerät oder sogar einem separaten Speichergerät ablegen Datenbankinstanz. Um beispielsweise ein BLOB abzurufen, ist möglicherweise ein großer sequenzieller Lesevorgang auf der Festplatte erforderlich, der für eine herkömmliche Festplatte besser geeignet ist als für ein SSD-Gerät.
  • Anstatt die Gleichheit anhand einer sehr langen Textzeichenfolge zu testen, können Sie einen Hash des Spaltenwerts in einer separaten Spalte speichern, diese Spalte indizieren und den Hash-Wert in Abfragen testen. (Verwenden Sie die Funktion MD5() oder CRC32(), um den Hash-Wert zu erzeugen.)

SQL-Anweisungen optimieren

Wir fanden es nützlich, eine Abfrage mit schlechter Leistung in zwei Schritten zu analysieren:

  • Finden Sie heraus, ob Ihre Anwendung mehr Daten abruft, als Sie benötigen. Das bedeutet normalerweise, dass auf zu viele Zeilen zugegriffen wird, möglicherweise aber auch auf zu viele Spalten.
  • Finden Sie heraus, ob der MySQL-Server mehr Zeilen analysiert, als er benötigt.

SELECT-Anweisungen optimieren

  • Vermeiden Sie die Verwendung von Funktionen in Prädikaten
  • Vermeiden Sie die Verwendung eines Platzhalters (%) am Anfang eines Prädikats
  • Verwenden Sie DISTINCT und UNION nur bei Bedarf
Freigabeerklärung Dieser Artikel wird unter: https://dev.to/hulk-pham/mysql-optimize-tips-4oic?1 reproduziert. Wenn ein Verstoß vorliegt, wenden Sie sich bitte an [email protected], um ihn zu löschen.
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