Heim >Datenbank >MySQL-Tutorial >Codezusammenfassung des langsamen MySQL-Abfragevorgangs
Der folgende Editor bietet Ihnen eine Zusammenfassung der MysqlSlowQuery-Operationen. Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Editor, um einen Blick darauf zu werfen
Erklärung zu langsamen MySQL-Abfragen
Das langsame Abfrageprotokoll von MySQL ist ein Typ, der von MySQL Logging bereitgestellt wird , das zum Aufzeichnen von Anweisungen verwendet wird, deren Antwortzeit den Schwellenwert in MySQL überschreitet, bezieht sich insbesondere auf SQL, dessen Laufzeit den Wert long_query_time überschreitet, der im langsamen Abfrageprotokoll aufgezeichnet wird. Der Standardwert von long_query_time ist 10, was bedeutet, dass Anweisungen länger als 10 Sekunden ausgeführt werden. Standardmäßig startet die Mysql-Datenbank das langsame Abfrageprotokoll nicht. Wir müssen diesen Parameter natürlich manuell festlegen, wenn er nicht für die Optimierung benötigt wird, wird es im Allgemeinen nicht empfohlen, ihn zu starten Das langsame Abfrageprotokoll führt zu oder mehr oder weniger zu bestimmten Auswirkungen auf die Leistung. Das langsame Abfrageprotokoll unterstützt das Schreiben von Protokolldatensätzen in Dateien und das Schreiben von Protokolldatensätzen in Datenbanktabellen. Das langsame Abfrageprotokoll wird zum Aufzeichnen einiger zu langsamer Abfrageanweisungen verwendet, was Administratoren bei der Analyse des Problems helfen kann auf nein Um es zu aktivieren, müssen Sie eine Reihe von Parametern in der Konfigurationsdatei hinzufügen, um
Grund für das Einschalten der langsamen MySQL-Abfrage
Enable mysql slow query method
1) Methode 1: Melden Sie sich am MySQL-Datenbankterminal an und öffnen Sie
mysql> show variables like "%long%"; <SPAN style="COLOR: #ff00ff"> //查看一下默认为慢查询的时间10秒 </SPAN> +-----------------+-----------+ | Variable_name | Value | +-----------------+-----------+ | long_query_time | 10.000000 | +-----------------+-----------+ 1 row in set (0.00 sec) mysql> set global long_query_time=1; <SPAN style="COLOR: #ff00ff">//设置成1秒,加上global,下次进mysql已然生效</SPAN> Query OK, 0 rows affected (0.00 sec) mysql> show variables like "%slow%"; <SPAN style="COLOR: #ff00ff"> //查看一下慢查询是不是已经开启 </SPAN> +---------------------+---------------------------------+ | Variable_name | Value | +---------------------+---------------------------------+ | log_slow_queries | OFF | | slow_launch_time | 2 | | slow_query_log | OFF | | slow_query_log_file | /usr/local/mysql/mysql-slow.log | +---------------------+---------------------------------+ 4 rows in set (0.00 sec) mysql> set slow_query_log='ON'; <SPAN style="COLOR: #ff00ff"> //加上global,不然会报错的</SPAN> ERROR 1229 (HY000): Variable 'slow_query_log' is a GLOBAL variable and should be set with SET GLOBAL mysql> set global slow_query_log='ON'; <SPAN style="COLOR: #ff00ff">//这个参数设置为ON,表示启用慢查询,可以捕获执行时间超过一定数值的SQL语句。</SPAN> Query OK, 0 rows affected (0.28 sec) mysql> show variables like "%slow%"; <SPAN style="COLOR: #ff00ff">//查看是否已经开启 </SPAN> +---------------------+---------------------------------+ | Variable_name | Value | +---------------------+---------------------------------+ | log_slow_queries | ON | | slow_launch_time | 2 | | slow_query_log | ON | | slow_query_log_file | /usr/local/mysql/mysql-slow.log | +---------------------+---------------------------------+ 4 rows in set (0.00 sec)
Methode 2. Ändern Sie die MySQL-Konfigurationsdatei my.cnf
Fügen Sie den folgenden Inhalt in der Konfiguration des Bereichs [mysqld] hinzu
......
slow_query_log = 1 //开启慢查询日志,将1改为ON也可以 long_query_time = 1 //mysql慢查询时间,指定达到多少秒才算慢查询;这里推荐设置超过1秒的执行语句就会被记录到慢查询日志中 slow_query_log_file= /var/lib/mysql/mysql-slow.log //慢查询日志路径。这里slow_query_log_file修改为log-slow-queries 也可以 //主要是上面三行内容,还可以添加下面几行细节性配置 long-queries-not-using-indexes //记录没有使用索引的查询语句 min_examined_row_limit = 1000 //记录查找了多达1000次而引起的慢查询 log-slow-admin-statements //记录ALTER TABLE等语句引发的慢查询 log-slow-slave-statements //记录从服务器产生的慢查询
Analysetool
/usr/local/mysql/libexec/mysqld, Version: 5.1.26-rc-log (Source distribution). started with: Tcp port: 3306 Unix socket: /tmp/mysql.sock Time Id Command Argument # Time: 100814 13:28:30 # User@Host: root[root] @ localhost [] # Query_time: 10.096500 Lock_time: 0.045791 Rows_sent: 1 Rows_examined: 2374192 SET timestamp=1281763710; select count(distinct ad_code) as x from ad_visit_history where ad_code in (select ad_code from ad_list where media_id=15); # Time: 100814 13:37:02 # User@Host: root[root] @ localhost [] # Query_time: 10.394134 Lock_time: 0.000091 Rows_sent: 1 Rows_examined: 2374192 SET timestamp=1281764222; select count(distinct ad_code) as x from ad_visit_history where ad_code in (select ad_code from ad_list where media_id=15); # Time: 100814 13:37:16 # User@Host: root[root] @ localhost [] # Query_time: 4.608920 Lock_time: 0.000078 Rows_sent: 1 Rows_examined: 1260544 SET timestamp=1281764236; select count(*) as cou from ad_visit_history where ad_code in (select ad_code from ad_list where id=41) order by id desc;Beispiel:
Das obige ist der detaillierte Inhalt vonCodezusammenfassung des langsamen MySQL-Abfragevorgangs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!