Abfrage-Cache-OptimierungEs wird nicht empfohlen, es zu verwenden. Es wird normalerweise als Cache-Schicht in Anwendungsdiensten verwendet. Schließlich ist die Datenparallelitätsfunktion begrenzt. ÜberblickWenn 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. Abfrageprozess1. 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 AbfragecachesInkonsistenz 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 SpeicherverwaltungPrinzipien der SpeicheroptimierungWeisen 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-SpeicheroptimierungDie 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-SpeicheroptimierungInnoDB 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 Verbindungsoptimierungmaximale_VerbindungDie 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ückstandDie 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_CacheSteuert 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ößeUm 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_timeoutLegen 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; ProtokollDer 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_binGibt den Namen der Binärprotokolldatei an, in der alle Anweisungen aufgezeichnet werden, die Änderungen an der Datenbank verursachen. binlog_do_db binlog_ignore_dbGibt 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_binlogGeben Sie an, wie oft Protokolle geschrieben werden sollen, bevor die Festplatte synchronisiert wird. general_log=1Ob 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 = 1Gibt an, ob das langsame Abfrageprotokoll aktiviert werden soll. 1 bedeutet aktiviert, 0 bedeutet deaktiviert. lange_Abfragezeit=3Legen Sie die langsamste Abfragezeit fest. Nur Abfrageanweisungen, die diese Zeit überschreiten, werden protokolliert. log_slow_admin_statementsOb 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:
|
<<: 17 404-Seiten, die Sie erleben möchten
>>: JavaScript-Modularität erklärt
Inhaltsverzeichnis 1. Anonyme Slots 2. Benannte S...
Vorwort Glauben Sie mir, solange Sie sich an die ...
Ich habe vor Kurzem eine Reihe statistischer Funk...
In diesem Artikel werden die Installations- und K...
Wir müssen zunächst die Luftqualitätsdaten mit de...
Grundlegende Umgebung Pagoden-Montageservice [Pyt...
Vorwort MySQL bezeichnet die Schritte Vorbereiten...
1 Was ist MVCC Der vollständige Name von MVCC lau...
Normalerweise färben wir als Webmaster während de...
Dieser Artikel beschreibt, wie xdebug in einer Ub...
In diesem Artikel wird der spezifische Prozess zu...
1. Grundlegende Anwendungsbeispiele für Float 1. ...
Inhaltsverzeichnis 1.DB, DBMS, SQL 2. Eigenschaft...
Würmer replizieren sich, wie der Name schon sagt,...
Ab MySQL 8.0.16 können Sie eine Richtlinie zum Ab...