„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 > Recherchieren Sie nach MySQL-Architektur und optimieren Sie die Leistung

Recherchieren Sie nach MySQL-Architektur und optimieren Sie die Leistung

Veröffentlicht am 21.08.2024
Durchsuche:669

Zusammenfassung

MySQL ist ein Beziehungsdatenbankverwaltungssystem, das auf den Programmiersprachen C und C entwickelt wurde und von MySQL AB erstellt wurde, das von David Axmark, Allan Larsson und Michael Widenius gegründet wurde. Die neueste Version ist MySQL 9.0.

MySQL ist ein Open-Source-Projekt mit einer GNU-Lizenz.

MySQL ist derzeit das beliebteste und nützlichste Datenbankverwaltungssystem, da es Open Source ist, über alle Funktionen verfügt und eine hohe Leistung bietet.

Architektur

  • MySQL-Architekturdiagramm: Quelle

Research for MySQL architecture and Optimize performance

Client-Schicht

  • Die erste Ebene der MySQL-Systemarchitektur.
  • Die wichtigen Dienste dieser Schicht sind Verbindungsabwicklung, Authentifizierung und Sicherheit.
    • Verbindungsverwaltung: Verwaltet Verbindungen von Clients. Wenn ein Client eine Verbindung zum MySQL-Server herstellen möchte, wird ein neuer Thread für die Verbindung erstellt. Der Server speichert Threads zwischen, wenn neue Verbindungen erstellt werden.
    • Authentifizierung: Wenn ein Client eine Verbindung zu einem Server herstellt, muss er Authentifizierungsinformationen bereitstellen, um eine Verbindung herzustellen. Typischerweise authentifizieren sich Clients mit einem Benutzernamen und einem Passwort.
    • Sicherheit: MySQL bietet viele Funktionen zum Schutz der Datenbank und zur Überprüfung von Benutzerberechtigungen nach der Authentifizierung.

Serverschicht

  • Die nächste Schicht von MySQL ist für die Verarbeitung von Abfrageanweisungen und die Bereitstellung vieler Dienstprogramme verantwortlich.
  • Die Hauptfunktionen:
    • Parser: Wenn ein Client eine Abfrageanweisung anfordert, analysiert der Server diese, um einen Abfragebaum zu erstellen, die Abfrage neu zu schreiben und die Reihenfolge und Indizes zu definieren, die zum Ausführen der Abfrageanweisung verwendet werden sollen.
    • Optimierer: Optimiert die Abfrageanweisung vor der Ausführung. Dem Optimierer ist es egal, welche Engine verwendet wird, aber die Speicher-Engine kann die Optimierung für die spezifische Abfrage beeinflussen.
    • Abfragecache: Der Abfragecache speichert das Ergebnis einer Abfrageanweisung. Wenn ein Client dieselbe Abfrage erneut anfordert, gibt der Server das zwischengespeicherte Ergebnis zurück und umgeht dabei die Analyse- und Optimierungsschritte. Diese Funktion wurde in Version 8.0 oder höher aufgrund ihres Engpassproblems nicht mehr unterstützt.
    • Dienste und Dienstprogramme:
      • Sichern und Wiederherstellen
      • Sicherheit: Anbieterbenutzer und Berechtigungssystem
      • Replikation: Dies ist ein Prozess zum Kopieren und Synchronisieren von Daten vom Hauptserver auf viele untergeordnete Server.
      • Cluster
      • Partitionierung: Teilen Sie die Tabelle mithilfe einer bestimmten Logik in viele Teile auf.
      • Workbench: Es handelt sich um ein visuelles Tool, das für die Interaktion mit und die Nutzung von MySQL entwickelt wurde.

Speicherschicht

  • Es ist eine Verantwortungsebene für die Art und Weise, wie wir Daten in der Datenbank speichern.
  • Standardmäßig verwendet MySQL die InnoDB-Speicher-Engine.
  • MySQL unterstützt viele verschiedene Speicher-Engines:
    • InnoDB (Standard)
    • MyISAM
    • ERINNERUNG
    • CSV
    • ARCHIV
    • SCHWARZES LOCH
    • VERSCHMELZEN
    • VERBUNDEN

Optimieren Sie die Leistung für MySQL

SQL-Anweisung optimieren

Erklärung erklären

  • Abfragevorhersage ohne Ausführung
explain sql_statememnt
  • Erklären Sie die Abfrage nach der Ausführung
explain analyze sql_statement

Indexierungstechnik

  • Es verbessert die Leistung beim Abfragen und Suchen.
  • Beim Erstellen eines Indexes für mehrere Spalten ist die erste Spalte sehr wichtig. Es entscheidet über die Leistung einer Abfrageanweisung. Wenn Sie beispielsweise einen Index für (Name, Geburtstag) erstellen, wird eine Abfrage, die die Spalte „Name“ verwendet, diesen Index verwenden, eine Abfrage, die die Spalte „Geburtstag“ verwendet, jedoch nicht.
  • Syntax zum Erstellen eines neuen Index:
create index idx_birthday on customers(birthday);
  • Der Befehl macht den Zugriff auf den angegebenen Index für den Abfrageoptimierer unzugänglich und verhindert so, dass er für Abfrageausführungspläne berücksichtigt wird:
alter table customers alter index idx_birthday invisible;

Partition

  • Wenn die Größe einer Datenbank größer als 2 GB (oder mehr als 10 Millionen Datensätze) ist, sollten Sie für diese Datenbank eine Partitionierung verwenden.
  • Bei Verwendung der Partitionierung verbessert sich die Leistung.
  • Der Partitionsplan sollte auf der Spalte basieren, die häufig in WHERE-Klauseln verwendet wird.

Datenbankparameter optimieren

Puffer-Cache-Treffer

  • Es ist der Prozentsatz der Daten, die das System aus dem Puffercache statt aus dem physischen Speicher lädt.
  • Wenn der Prozentsatz unter 90 % liegt, müssen Sie ihn optimieren.
  • Abhängig von 2 Parametern:
    • Innodb_buffer_pool_read_requests: Gesamtzahl der an den Pufferpool gesendeten Anfragen. Befehl: Globalen Status wie „%Innodb_buffer_pool_read_requests%“ anzeigen
    • Innodb_buffer_pool_reads: Die Gesamtzahl der Anforderungen, die nicht im Pufferpool im Speicher gefunden werden, muss von der Festplatte gelesen werden. Befehl: Globalen Status wie „%Innodb_buffer_pool_reads%“ anzeigen
  • Berechnungsformel:
(Innodb_buffer_pool_read_requestss - Innodb_buffer_pool_reads) x100 / Innodb_buffer_pool_read_requests

Tabellen-Cache-Treffer

  • MySQL speichert die Tabelle zwischen, um sie schnell im Speicher abzufragen.
  • Wenn der Prozentsatz unter 80 % liegt, müssen Sie ihn optimieren.
  • Abhängig von 2 Parametern:
    • Open_tables: Die Gesamtzahl der Tabellen wird im Cache geöffnet. Befehl: Globalen Status wie „Open_tables“ anzeigen
    • Opened_tables: Gesamtzahl der geöffneten Tabellen. Befehl: Globalen Status wie „Opened_tables“ anzeigen
  • Berechnungsformel: Open_tables/Opened_tables

Cache-Treffer der Tabellendefinition

  • Beim Ausführen einer Abfrage benötigt MySQL Informationen über die Tabelle, wie z. B. ihren Namen, die Anzahl der Spalten und die Anzahl der Zeilen. Diese Informationen werden als Tabellendefinition bezeichnet.
  • Wenn der Prozentsatz unter 80 % liegt, müssen Sie ihn optimieren.
  • Abhängig von 2 Parametern:
    • Open_table_definitions: Die gesamten Definitionstabellen befinden sich im Cache. Befehl: Globalen Status wie „Open_table_definitions“ anzeigen
    • Opened_tables: Gesamte Definitionstabellen werden angefordert. Befehl: Globalen Status wie „Opened_tables“ anzeigen
  • Berechnungsformel: Open_table_definitions/Opened_table_definitions

Temporäre Tabelle im Speicher

  • Viele SQL-Anweisungen wie Order, Group By, ... müssen eine temporäre Tabelle verwenden.
  • Wenn der Prozentsatz unter 80 % liegt, müssen Sie ihn optimieren.
  • Abhängig von 2 Parametern:
    • Created_tmp_disk_tables: Die Gesamtzahl der temporären Tabellen wird auf der Festplatte erstellt. Befehl: Globalen Status wie „%Created_tmp_disk_tables% anzeigen“
    • Created_tmp_tables: Es werden insgesamt temporäre Tabellen erstellt. Befehl: Globalen Status wie „%Created_tmp_tables% anzeigen“
  • Berechnungsformel: (Created_tmp_tables - Created_tmp_disk_tables)/ Created_tmp_tables

Abschluss

Dieser Blog bietet forschungsbasiertes Wissen über MySQL. MySQL ist ein relationales Datenbankverwaltungssystem, das für seine geringen Kosten, umfangreichen Dienstprogramme und hohe Leistung bekannt ist und sich daher für eine Vielzahl von Projekten eignet. Während dieser Blog viele Funktionen und Aspekte von MySQL behandelt, gibt es noch mehr zu entdecken. Ich werde in zukünftigen Blogs tiefer auf zusätzliche Funktionen und Wissen eingehen.

Vielen Dank fürs Lesen und wir sehen uns in meinem nächsten Blog.

Referenzdokument

  • MySQL-Dokumentation
  • MySQL-Kurs – Tran Quoc Huy
  • Wikipedia – MySQL
Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/tuantran12/research-for-mysql-architecture-and-optimize-performance-5261?1 Bei Verstößen 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