哪些查询需要优化:
mysql中有个慢查询日志进行sql监控
慢查日志的存储格式

慢查日志所包含的内容
执行 SQL 的主机信息
# User@Host: root[root] @ localhost []
SQL 的执行信息
# Query_time: 0.000024 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0
SQL 执行时间
SET timestamp=1402389328;
SQL 的内容
select CONCAT ('storage engine:', @@storage_engine) as INFO;
如何发现有问题的 SQL?
使用 MySQL 慢查日志对有效率问题的 SQL 进行监控
Show variables like `slow_query_log`
set global slow_query_log_file='/home/mysql/sql_log/mysql- slow.log'
set global log_queries_not_using_indexes=on;
set global long_query_time=1
查看是否开启慢查询日志
show variables like 'slow_query_log'
设置慢查询日志位置
set global slow_query_log_file='/home/mysql/sql_log/mysql-slow.log'
开启没有索引的sql语句慢查询检测
set global log_queries_not_using_indexes=on
设置多久时间记录慢查询日志上
set global long_query_time=1(1秒就记录慢查询日志上)
开启慢查询命令~~~~
// 查看是否开启慢查询日志
show variables like 'slow_query_log'
å
查询MySQL是否开启了慢查询日志:show variables like 'slow_query_log';
如何发现有问题的SQL?
使用MySQL慢查日志对有效率问题的SQL进行监控
mysql里面慢查询日志可以对有效率问题的sql进行监控,因此在进行sql优化时,需要开启慢查询日志。
开启方式是:
先看服务器是否开启慢查询日志:show variables like 'slow_query_log'; 若value显示off,说明没开,需要开启慢查询日志,分析问题sql语句。
show variables like '%log%';, 查到log_queries_not_using_indexes也是off,即未使用索引的查询没开启,需要先开启这个才能设置全局慢查询;set global log_queries_not_using_indexes=on;
long_query_time 为0说明,不管什么查询,都会被记录到慢查询日志中;
set global slow_query_log=on; 开启慢查询日志
查看慢查询日志所记录的位置 show variables like 'slow%'
看到 slow_query_log_file 的位置,
退出数据库,tail -50 慢查询文件名,可以查看慢查询日志信息。
慢查询日志的存储格式:
执行sql的主机信息;
sql的执行信息;
sql的执行时间;
sql的内容。
查看是否打开慢查询日志:
show variables like 'slow_query_log';
如果查到是off, 说明没有开启该功能, 使用如下命令开启:
set global slow_query_log=on;
查看是否将没有建立索引的查询列入慢查询记录:
show variables like '%log%';
显示的结果中有一项"log_queries_not_using_indexes"值为off, 说明没有开启, 使用下面的命令开启:
set global log_queries_not_using_indexes=on;
查看慢查询时间设置:
show variables like 'long_query_time';
显示的值为"0.00000"则表示要将所有查询记录到日志.
设置慢查询时间设置:
set global long_query_time=0;
设置为零则记录所有查询信息.
使用如下命令查看查询日志的文件位置:
show variables like 'slow%';
可以看到有一项"slow_query_log_file"的值为"/var/lib/mysql/localhost-slow.log", 这就是慢查询日志文件的存放位置.
33333
22222
set global log_queries_not_using_indexes = on 没有用到索引的也log出来
set global long_query_time=1 单位是1s
开启慢查询日志
set global slow_query_log=on
记录未使用索引的查询
set global log_queries_bot_using_indexes = on
查询是否开启了MySQL的慢查询日志
show variables like 'slow_query_log'
开启慢查询
查看慢查询日志变量
开启慢查询日志命令
慢查日志所包含的内容
慢查询日志所包含的内容
慢查日志的内容格式:
使用Mysql慢查询日志对有效率问题的sql进行监控的相关语句:
慢查询日志所包含的内容
慢查询日志的存储格式