mysql记录下查询超过指定时间的语句,我们将超过指定时间的sql语句查询称为慢查询。
1、查看时间限制
show variables like '%long%';
就会看到:
+---------------------------------------------------+-----------+
| variable_name | value |
+---------------------------------------------------+-----------+
| long_query_time | 10.000000 |
| max_long_data_size | 1048576 |
| performance_schema_events_waits_history_long_size | 10000 |
+---------------------------------------------------+-----------+
如果查询超过long_query_time的时间就称为慢查询。
2、查看数据库的启动时间
show status like 'uptime%';
就会看到
+---------------------------+-------+
| variable_name | value |
+---------------------------+-------+
| uptime | 76333 |
| uptime_since_flush_status | 76333 |
+---------------------------+-------+
3、查看查询语句条数
show status like 'com_select';
就会看到
+---------------+-------+
| variable_name | value |
+---------------+-------+
| com_select | 1 |
+---------------+-------+
4、获取连接数
show status like 'connections';
就会看到
+---------------+-------+
| variable_name | value |
+---------------+-------+
| connections | 2 |
+---------------+-------+
5、设置慢查询的时间
set long_query_time = 1;
6、以安全模式启动mysql服务,慢查询记录将会写入日志之中。
开启慢查询日志
在mysql的配置文件中加以下参数
log-show-queries = d:/mysql/log/mysqld-slow-query.log
long-query-time = 5
log-queries-not-using-indexes
阐述:
有关慢查询日志功能存放位置,该目录文件一定要有写的权限。可以用设置,系统会给一个缺省的文件host_name-show.log
long_query_time
sql执行时间阀值,默认为10秒
注意一下三点:
1、设置long_query_time这个阀值后,mysql数据库会记录运行时间超过该值的所有sql语句,但对于运行时间正好等于long_query_time的情况并不会被记录下来。也就是说,在mysql源码里是判断大于log_query_time,而非大于等于。
2、从mysql5.1开始,long_query_time开始以微秒计算,这样精确记录sql的运行时间。
3、建议该时间不应太小或太大,最好在5-10秒之间。当然可以根据自己的情况来定。
log-queries-not-using-indexes
如果运行的sql语句没有使用索引,则mysql数据库同样会将这条sql语句记录到慢查询日志文件之中。
以上就是mysql高级十一——慢查询的内容。