query_cache_limit query_cache_limit gibt die Puffergröße an, die von einer einzelnen Abfrage verwendet werden kann. Der Standardwert ist 1 MB. Optimieren der query_cache_size Ab 4.0.1 bietet MySQL einen Abfragepuffermechanismus. Mithilfe der Abfragepufferung speichert MySQL die SELECT-Anweisung und die Abfrageergebnisse im Puffer. Zukünftig werden für dieselbe SELECT-Anweisung (Groß-/Kleinschreibung beachten) die Ergebnisse direkt aus dem Puffer gelesen. Laut MySQL-Benutzerhandbuch können Sie durch die Verwendung des Abfragepuffers eine Effizienzsteigerung von bis zu 238 % erzielen. Durch Überprüfen des Statuswerts Qcache_* können Sie feststellen, ob die Einstellung von query_cache_size sinnvoll ist (die obigen Statuswerte können mit SHOW STATUS LIKE 'Qcache%' abgerufen werden). Wenn der Wert von Qcache_lowmem_prunes sehr groß ist, deutet dies darauf hin, dass der Puffer häufig nicht ausreicht. Wenn der Wert von Qcache_hits ebenfalls sehr groß ist, deutet dies darauf hin, dass der Abfragepuffer sehr häufig verwendet wird und Sie die Puffergröße erhöhen müssen. Wenn der Wert von Qcache_hits nicht groß ist, deutet dies darauf hin, dass Ihre Abfragewiederholungsrate sehr niedrig ist. In diesem Fall beeinträchtigt die Verwendung des Abfragepuffers die Effizienz, sodass Sie erwägen können, den Abfragepuffer nicht zu verwenden. Darüber hinaus wird durch das Hinzufügen von SQL_NO_CACHE zur SELECT-Anweisung explizit angegeben, dass der Abfragepuffer nicht verwendet wird. Andere Parameter im Zusammenhang mit der Abfragepufferung sind query_cache_type, query_cache_limit und query_cache_min_res_unit. query_cache_type gibt an, ob Abfragepufferung verwendet werden soll und kann auf 0, 1 oder 2 gesetzt werden. Diese Variable ist eine Variable auf SESSION-Ebene. query_cache_limit gibt die Puffergröße an, die von einer einzelnen Abfrage verwendet werden kann. Der Standardwert ist 1 MB. query_cache_min_res_unit wurde nach Version 4.1 eingeführt. Es gibt die Mindesteinheit des zugewiesenen Pufferspeichers an und der Standardwert beträgt 4 KB. Überprüfen Sie den Statuswert Qcache_free_blocks. Wenn der Wert sehr groß ist, bedeutet dies, dass sich viele Fragmente im Puffer befinden, was bedeutet, dass die Abfrageergebnisse relativ klein sind. In diesem Fall müssen Sie query_cache_min_res_unit reduzieren. Da unser Serverinhalt 96G groß ist, haben wir ihn wie folgt eingestellt Abfrage-Cachegröße = 128 M query_cache_limit = 8 M
Eine relativ vollständige my.ini-Datei. Sie können sie entsprechend Ihrem eigenen Server anpassen, um zu verhindern, dass MySQL nicht mehr ausgeführt wird. Dies gilt für MySQL Version 5.6. [Kunde] Port = 3306 Socket = /tmp/mysql.sock Standardzeichensatz = utf8 #Stellen Sie die Client-Zeichenkodierung ein [mysqld] # allgemeine Konfigurationsoptionen Port = 3306 Socket = /tmp/mysql.sock basedir="E:/Datenbank/mysql/" datadir="E:/Datenbank/mysql/Daten/" tmpdir = "E:/Datenbank/mysql/tmp/" #*** Zeichensatz *** Zeichensatzserver = utf8 #Stellen Sie die Zeichenkodierung auf dem Server ein #Die folgenden drei Parameter sind standardmäßig auf 12500, 1400 und 2000 eingestellt performance_schema_max_table_instances = 20000 Tabellendefinitionscache = 2000 table_open_cache = 4096
#*** Netzwerk *** back_log = 1024 #skip-networking #Nicht standardmäßig aktiviert max_verbindungen = 10000 #max_connect_errors = 3000 table_open_cache = 4096 #externe Sperrung #Standardmäßig nicht aktiviert max_allowed_packet = 256M maximale Heap-Tabellengröße = 128 MB secure_file_priv='' explizite_Vorgaben_für_Zeitstempel=true gleichzeitige_Einfügung = 2
#*** Zeitüberschreitung *** interaktives_Timeout = 1000 Wartezeitüberschreitung = 1000 # *** globaler Cache *** Lesepuffergröße = 64 M read_rnd_buffer_size = 64M Sortierpuffergröße = 64 M Join-Puffergröße = 1024 M
# *** Faden *** Thread-Cache-Größe = 64 # Thread_Parallelität = 8 Thread-Stapel = 512 KB
# *** Abfrage-Cache *** Abfrage-Cachegröße = 128 M query_cache_limit = 8 M
# *** Index *** ft_min_word_len = 8
#memlock #Nicht standardmäßig aktiviert Standard-Speicher-Engine = MYISAM innodb=AUS default-tmp-storage-engine=MYISAM transaction_isolation = WIEDERHOLBARES LESEN
# *** temporäre Tabelle *** temporäre Tabellengröße = 1024 M
# *** Binärprotokoll *** #log-bin=mysql-bin binlog_cache_size = 4M binlog_format=gemischt #log_slave_updates #Nicht standardmäßig aktiviert #log #Standardmäßig nicht aktiviert. Dies ist das Abfrageprotokoll. Die Aktivierung beeinträchtigt die Serverleistung. log_warnings #Warnprotokoll öffnen
# *** langsames Abfrageprotokoll *** langsames_Abfrageprotokoll lange_Abfragezeit = 10 # *** Replikationsbezogene Einstellungen #Server-ID = 1 #Server-ID = 2 #master-host = <Hostname> #master-user = <Benutzername> #master-password = <Passwort> #master-port = <Anschluss> #schreibgeschützt #*** MyISAM-spezifische Optionen #myisam_recover Schlüsselpuffergröße = 2048 M bulk_insert_buffer_size = 128M myisam_sort_buffer_size = 128 M myisam_max_sort_file_size = 10 G myisam_repair_threads = 1 myisam_recover_options=erzwingen,Sicherung
# *** INNODB-spezifische Optionen *** #skip-innodb #Nicht standardmäßig aktiviert lose-innodb-trx = 0 lose-innodb-sperren=0 lose-innodb-Sperre-wartet=0 lose-innodb-cmp = 0 lose-innodb-cmp-pro-index=0 lose-innodb-cmp-pro-Index-Reset = 0 lose-innodb-cmp-reset=0 lose-innodb-cmpmem = 0 lose-innodb-cmpmem-reset = 0 lose-innodb-puffer-seite=0 lose-innodb-puffer-seite-lru=0 lose-innodb-puffer-pool-statistiken=0 lose-innodb-Metriken=0 lose-innodb-ft-Standard-Stoppwort = 0 #loose-innodb-ft-eingefügt=0 lose-innodb-ft-gelöscht=0 lose-innodb-ft-wird-gelöscht=0 lose-innodb-ft-config = 0 lose-innodb-ft-index-cache=0 lose-innodb-ft-index-tabelle=0 lose-innodb-sys-tabellen=0 lose-innodb-sys-tablestats=0 lose-innodb-sys-indizes=0 lose-innodb-sys-spalten=0 lose-innodb-sys-felder=0 lose-innodb-sys-fremd = 0 lose-innodb-sys-fremd-cols = 0 [mysqldump] schnell max_allowed_packet = 256M [mysql] kein automatisches Wiederaufwärmen [myisamchk] Schlüsselpuffergröße = 2048 M Sortierpuffergröße = 2048 M Lesepuffer = 32 M Schreibpuffer = 32 M [mysqlhotcopy] Interaktives Timeout [mysqld_safe] Limit für geöffnete Dateien = 10240 sql_mode=KEIN_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Wenn Sie MySQL optimieren möchten, können Sie den Artikel zum MySQL-Abfragecache lesen. Das könnte Sie auch interessieren:- MySQL-Abfrageoptimierung: LIMIT 1 vermeidet vollständigen Tabellenscan und verbessert die Abfrageeffizienz
- Warum wird die MySQL-Paging-Funktion bei Verwendung von Limits immer langsamer?
- Detaillierte Erläuterung der Fallstricke beim Mischen von MySQL-Order-By und Limit
- Einfaches Beispiel für den Grenzwertparameter der MySQL-Paging
- Gründe und Optimierungslösungen für langsames MySQL-Limit-Paging mit großen Offsets
- Mysql-Sortierung und Paginierung (Order by & Limit) und vorhandene Fallstricke
- So verwenden Sie das MySQL-Limit und lösen das Problem großer Paging-Aufgaben
- Detaillierte Erläuterung des Problems der gemischten Verwendung von Limit- und Summenfunktionen in MySQL
- So verbessern Sie die MySQL Limit-Abfrageleistung
- Detaillierte Erläuterung der MySQL Limit-Leistungsoptimierung und der Paging-Daten-Leistungsoptimierung
- Eine kurze Diskussion über die Implementierung der MySQL-Lösung zur Optimierung des Seitenlimits
- Die Auswirkungen des Limits auf die Abfrageleistung in MySQL
|