Detaillierte Erläuterung der gleichzeitigen Parameteranpassung von MySQL

Detaillierte Erläuterung der gleichzeitigen Parameteranpassung von MySQL

Abfrage-Cache-Optimierung

Es wird nicht empfohlen, es zu verwenden. Es wird normalerweise als Cache-Schicht in Anwendungsdiensten verwendet. Schließlich ist die Datenparallelitätsfunktion begrenzt.

Überblick

Wenn Sie den MySQL-Abfragecache starten und dieselbe SQL-Anweisung ausführen, liest der Server das Ergebnis direkt aus dem Cache. Wenn die Daten geändert werden, wird der vorherige Cache ungültig. Tabellen, die häufig geändert werden, sind nicht für die Abfragezwischenspeicherung geeignet.

Abfrageprozess

1. Der Client sendet eine Abfrage an den Server. 2. Der Server überprüft zunächst den Abfragecache. Wenn der Cache gefunden wird, gibt er sofort das im Cache gespeicherte Ergebnis zurück, andernfalls fährt er mit der nächsten Stufe fort. 3. Der Server analysiert und verarbeitet das SQL vor, und dann generiert der Optimierer den entsprechenden Ausführungsplan. 4. Rufen Sie gemäß dem generierten Ausführungsplan die API der Speicher-Engine auf, um die Abfrage auszuführen. 5. Geben Sie das Ergebnis an den Client zurück – und legen Sie das Abfrageergebnis in den Abfragecache.

Abfrage-Cache-Konfiguration

Überprüfen Sie, ob die Datenbank das Zwischenspeichern von Abfragen unterstützt (JA oder EIN).
	Variablen wie „have_query_cache“ anzeigen;
Überprüfen Sie, ob der Datenbankabfragecache aktiviert ist, und zeigen Sie Variablen wie „query_cache_type“ an.
	OFF oder 0 Abfrage-Cache-Funktion ist ausgeschaltet ON oder 1 Abfrage-Cache-Funktion ist eingeschaltet, ausgewählte Ergebnisse, die die Cache-Bedingungen erfüllen, werden zwischengespeichert, andernfalls werden sie nicht zwischengespeichert und SQL_NO_CACHE wird angegeben und es wird kein Caching durchgeführt DEMAND oder 2 Abfrage-Cache-Funktion wird bei Bedarf ausgeführt und nur SELECT-Anweisungen, die SQL_CACHE angeben, werden zwischengespeichert; andere werden nicht zwischengespeichert. Zeigen Sie die Größe des Abfrage-Cache an, zeigen Sie Variablen wie „query_cache_size“ an;
Überprüfen Sie den Cache-Status, der Status wird beispielsweise „Qcache%“ angezeigt.
		Qcache_free_blocks Die Anzahl der im Cache verfügbaren Speicherblöcke. Qcache_free_memory Die im Cache verfügbare Speichermenge. Qcache_hits Die Anzahl der Abfragecache-Treffer. Qcache_lowmen_prunes Die Anzahl der Abfragen, die aufgrund von zu wenig Speicher aus dem Abfragecache entfernt wurden. Qcache_not_cached Die Anzahl der nicht zwischengespeicherten Abfragen (können aufgrund der Einstellung query_cache_type nicht zwischengespeichert werden).
		Qcache_queries_in_cache Die Anzahl der im Abfragecache registrierten Abfragen Qcache_total_blocks Die Gesamtzahl der Blöcke im Abfragecache Abfragecache aktivieren Suchen Sie die MySQL-Konfigurationsdatei und fügen Sie my.cnf hinzu Fügen Sie query_cache_type=1 hinzu
	Der Abfragecache wird mit query_cache_type=DEMAND aktiviert   
		Wählen Sie die SQL_CACHE-ID aus der Tabelle aus
	Der Abfragecache wird mit query_cache_type=ON aktiviert.    
		Wählen Sie die SQL_NO_CACHE-ID aus der Tabelle aus.

Ungültigkeitserklärung des Abfragecaches

Inkonsistenz in SQL-Anweisungen: Die SQL-Abfrage enthält unsichere Informationen:
	Wie now(), current_date(), curdate(), curtime(), rand(), uuid(), database()
Wenn Tabellen in den Datenbanken mysql, infomation_schema oder performance_schema abgefragt werden, ohne dass Tabellenabfrageanweisungen verwendet werden, wird der Abfragecache nicht verwendet. Änderungen an der Abfragetabelle, die im Hauptteil einer gespeicherten Funktion, eines Triggers oder eines Ereignisses durchgeführt werden, löschen den Abfragecache, z. B. Einfügen, Aktualisieren, Löschen, Ablegen usw.

Optimierung der Speicherverwaltung

Prinzipien der Speicheroptimierung

Weisen Sie MySQL so viel Speicher wie möglich für das Caching zu und reservieren Sie ausreichend Speicher für das Betriebssystem und andere Programme. Das Lesen von Datendateien der MyISAM-Speicher-Engine hängt vom eigenen IO-Cache des Betriebssystems ab. Wenn also eine MyISAM-Tabelle vorhanden ist, sollte mehr Speicher für das Betriebssystem als IO-Cache-Sortierbereich reserviert werden. Der Verbindungsbereich und andere Caches werden jeder Datenbanksitzung zugewiesen. Die Standardeinstellung sollte entsprechend der maximalen Anzahl von Verbindungen angemessen zugewiesen werden. Wenn die Einstellung zu groß ist, werden nicht nur Ressourcen verschwendet, sondern es kommt auch zu einer Speichererschöpfung, wenn viele gleichzeitige Verbindungen bestehen.

MyISAM-Speicheroptimierung

Die Myisam-Speicher-Engine verwendet key_buffer, um Indexblöcke zwischenzuspeichern und so das Lesen und Schreiben von Myisam-Indizes zu beschleunigen. MySQL verfügt über keinen speziellen Cache-Mechanismus für die Datenblöcke der MyISAM-Tabelle und verlässt sich vollständig auf den IO-Cache key_buffer_size=512M des Betriebssystems.
	Je größer der Wert von key_buffer_size, desto höher die Effizienz. Es wird empfohlen, key_buffer_size mindestens 1/4 des verfügbaren Speichers zuzuweisen.
Variablen wie „key_buffer_size“ anzeigen; Größe von key_buffer_size red_buffer_size abfragen
	Wenn Sie MyISAM-Tabellen häufig sequenziell scannen, können Sie die Leistung verbessern, indem Sie den Wert read_buffer_size erhöhen. Erhöhen Sie ihn jedoch nicht zu sehr, da key_buffer_size für jede Sitzung exklusiv ist. Wenn Sie mehr als einen Wert festlegen, werden Ressourcen verschwendet.
	Bei Abfragen von MyISAM-Tabellen, die häufig sortiert werden müssen, kann eine entsprechende Erhöhung des Werts von red_rnd_buffer_size die Leistung eines solchen SQL verbessern, wenn das SQL eine Order-by-Klausel enthält. Dies gilt auch exklusiv für die Sitzung und kann nicht zu groß eingestellt werden.

InnoDB-Speicheroptimierung

InnoDB verwendet einen Speicherbereich als E/A-Pufferpool, der nicht nur zum Zwischenspeichern von InnoDB-Indexblöcken, sondern auch zum Zwischenspeichern von InnoDB-Datenblöcken verwendet wird inodb_buffer_pool_size
	Diese Variable bestimmt die maximale Cachegröße der InnoDB-Speicher-Engine und der Indexdaten. Unter der Voraussetzung, dass das Betriebssystem und andere Programme über genügend Speicher verfügen, gilt: Je größer der Wert, desto höher die Cache-Trefferquote, desto weniger Festplatten-E/A zum Zugriff auf die InnoDB-Tabelle erforderlich und desto höher die Leistung. innodb_buffer_pool_size=521M
innodb_log_buffer_size
	Bestimmt die Größe des InnoDB-Redo-Log-Puffers. Bei großen Transaktionen, die eine große Anzahl von Aktualisierungsdatensätzen generieren können, kann eine Erhöhung der Größe innodb_log_buffer_size verhindern, dass InnoDB unnötige Protokollschreibvorgänge auf die Festplatte ausführt, bevor die Transaktion festgeschrieben wird.
	innodb_log_buffer_size=10M
Variablen wie „innodb_buffer_pool_size“ anzeigen;
innodb_flush_log_at_trx_commit
	Steuert die Zeit, zu der InnoDB die Daten im Protokollpuffer in die Protokolldatei schreibt und die Festplatte leert. Die Werte sind 0, 1 und 2.
innodb_thread_concurrency
	Legen Sie die Anzahl gleichzeitiger InnoDB-Threads fest. Der Standardwert ist 0, was unbegrenzt bedeutet. Wenn Sie innodb_log_buffer_size festlegen möchten, wird empfohlen, dass es mit der Anzahl der CPU-Kerne des Servers übereinstimmt oder die doppelte Anzahl der CPU-Kerne beträgt.
	Die zum Ausführen der Protokolldatei verwendete Speichergröße in M-Einheiten innodb_log_files_in_group
	Protokolldateien zyklisch in mehrere Dateien schreiben read_buffer_size
	MySQL-Lesepuffergröße, eine Anforderung zum sequentiellen Scannen der Tabelle wird einem Lesepuffer read_rnd_buffer_size zugewiesen
	Größe des MySQL-Pufferspeichers für zufälliges Lesen

Verbindungsoptimierung

maximale_Verbindung

Die maximale Anzahl an Verbindungen beträgt standardmäßig 151. Linux kann im Allgemeinen 500–1000 unterstützen. Laut der Auswertung der Serverleistung werden Variablen wie „max_connections“ angezeigt.
	Maximale Anzahl von Verbindungen anzeigen

Rückstand

Die maximale Anzahl wartender Verbindungen nach Überschreiten der maximalen Anzahl von Verbindungen wird im Stapel gespeichert (normalerweise 50 + (max_connections / 5)) und das Maximum überschreitet 900 nicht
Variablen wie „back_log“ anzeigen

Tabelle_öffnen_Cache

Steuert die Anzahl der Tabellencaches, die von allen SQL-Anweisungsausführungsthreads geöffnet werden können. Beim Ausführen von SQL-Anweisungen muss jeder SQL-Ausführungsthread mindestens einen Tabellencache öffnen. Der Wert dieses Parameters sollte entsprechend der maximalen Anzahl von Verbindungen (max_connectons) und der maximalen Anzahl von Tabellen festgelegt werden, die an der Ausführung zugehöriger Abfragen durch jede Verbindung beteiligt sind.

Thread-Cache-Größe

Um die Verbindung zur Datenbank zu beschleunigen, speichert MySQL eine bestimmte Anzahl von Kundendienst-Threads zur Wiederverwendung im Cache. Mit dem Parameter thread_cache_size können Sie die Anzahl der im MySQL-Cache gespeicherten Kundendienst-Threads steuern.

innodb_lock_wait_timeout

Legen Sie die Zeit fest, die InnoDB-Transaktionen auf Zeilensperren warten. Der Standardwert beträgt 50 ms und kann bei Bedarf dynamisch festgelegt werden. Für Geschäftssysteme, die schnelles Feedback erfordern, kann die Wartezeit für Zeilensperren reduziert werden, um eine langfristige Transaktionsunterbrechung zu vermeiden. Für im Hintergrund ausgeführte Stapelverarbeitungsprogramme kann die Wartezeit für Zeilensperren erhöht werden, um große Rollback-Vorgänge zu vermeiden. Variablen wie „innodb_lock_wait_timeout“ anzeigen;

Protokoll

Der Name der Fehlerprotokolldatei, in der Informationen zum Starten und Stoppen von MySQL sowie zu allen Überprüfungsfehlern aufgezeichnet werden, die während der Ausführung des Servers auftreten.

log_bin

Gibt den Namen der Binärprotokolldatei an, in der alle Anweisungen aufgezeichnet werden, die Änderungen an der Datenbank verursachen.

binlog_do_db binlog_ignore_db

Gibt die Datenbank an, die im Binärprotokoll aktualisiert werden soll. Alle anderen Datenbankaktualisierungen, die nicht explizit angegeben sind, werden ignoriert und nicht im Protokoll aufgezeichnet.

sync_binlog

Geben Sie an, wie oft Protokolle geschrieben werden sollen, bevor die Festplatte synchronisiert wird.

general_log=1

Ob die Abfrageprotokollierung aktiviert werden soll

general_log_file Dateiname (Standard: host_name.log)

Geben Sie den Namen der Abfrageprotokolldatei an. Der Benutzer zeichnet alle Abfrageanweisungen im Abfrageprotokolldateinamen auf: slow_query_log_file=slow_query.log
mysqldumpslow slow_query.log; Sehen Sie sich die Protokolldatei für langsame Abfragen an

langsames_Abfrageprotokoll = 1

Gibt an, ob das langsame Abfrageprotokoll aktiviert werden soll. 1 bedeutet aktiviert, 0 bedeutet deaktiviert.

lange_Abfragezeit=3

Legen Sie die langsamste Abfragezeit fest. Nur Abfrageanweisungen, die diese Zeit überschreiten, werden protokolliert.

log_slow_admin_statements

Ob Verwaltungsanweisungen in das Protokoll für langsame Abfragen geschrieben werden sollen

Dies ist das Ende dieses Artikels mit der detaillierten Erklärung der MySQL-Parallelitätsparameteranpassung. Weitere relevante Inhalte zur MySQL-Parallelitätsparameteranpassung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • MySQL-Methode zur Sperrensteuerung für Parallelität
  • Wissenspunkte zum Prinzip der MySQL-Parallelitätskontrolle
  • So handhaben Sie gleichzeitige Aktualisierungen von MySQL-Daten

<<:  17 404-Seiten, die Sie erleben möchten

>>:  JavaScript-Modularität erklärt

Artikel empfehlen

Detaillierte Erklärung zu anonymen Slots und benannten Slots in Vue

Inhaltsverzeichnis 1. Anonyme Slots 2. Benannte S...

Detaillierte Erklärung dieses Zeigeproblems in JavaScript

Vorwort Glauben Sie mir, solange Sie sich an die ...

Detaillierte Erklärung des Javascript Echarts Luftqualitätskarteneffekts

Wir müssen zunächst die Luftqualitätsdaten mit de...

Detailliertes Tutorial zum Bereitstellen eines Django-Projekts unter CentOS

Grundlegende Umgebung Pagoden-Montageservice [Pyt...

Implementierung der MVCC-Mehrversions-Parallelitätskontrolle von MySQL

1 Was ist MVCC Der vollständige Name von MVCC lau...

So kompilieren und installieren Sie xdebug in einer Ubuntu-Umgebung

Dieser Artikel beschreibt, wie xdebug in einer Ub...

So erhalten Sie USB-Scannerdaten mit js

In diesem Artikel wird der spezifische Prozess zu...

Detaillierte Beispiele zur Float-Verwendung in HTML/CSS

1. Grundlegende Anwendungsbeispiele für Float 1. ...

Ausführliche Erläuterung zum MySQL-Lernen einer Datenbanksicherung

Inhaltsverzeichnis 1.DB, DBMS, SQL 2. Eigenschaft...

Grundlegende Kenntnisse zur MySQL-Wurmreplikation

Würmer replizieren sich, wie der Name schon sagt,...

Detaillierte Erläuterung der MySQL 8.0-Richtlinie zum Ablauf von Passwörtern

Ab MySQL 8.0.16 können Sie eine Richtlinie zum Ab...