MYSQL定位慢查询
来源:互联网 发布:遗传算法工具箱下载 编辑:程序博客网 时间:2024/04/30 21:13
在web开发中,我们经常会写出一些SQL语句,一条糟糕的SQL语句可能让你的整个程序都非常慢,超过10秒一般用户就会选择关闭网页,如何优化SQL语句将那些运行时间比较长的SQL语句找出呢?MySQL给我们提供了一个很好的功能,那就是慢查询!所谓的慢查询就是通过设置来记录超过一定时间的SQL语句!那么如何应用慢查询呢?
开启MySQL的慢查询日志功能
默认情况下,MySQL是不会记录超过一定执行时间的SQL语句的。要开启这个功能,我们需要修改MySQL的配置文件,windows下修改my.ini,Linux下修改my.cnf文件,在[mysqld]最后增加如下命令:
slow_query_log= 1
long_query_time= 1
slow_query_log_file=c:/slow.log
解释:
slow_query_log= 1,表示开启慢查询日志功能,当然slow_query_log= 0就是关闭了(默认情况),要开启也可以直接这样写slow_query_log。
long_query_time =1,表示设置慢查询的时间为1S,默认为10S,即如果有查询超过了这个时间,将会被记录到慢查询日志中。当然在高版本的MYSQL中这个时间还可以设置成小数。
slow_query_log_file=c:/slow.log,表示慢查询日志存放的目录文件。当然这条可以不写,不写时,默认在mysql的data目录下生成“主机名_slow.log”的文件来存放日志。
测试
1、在my.ini中加入以下配置,并重启动MYSQL服务
slow_query_log = 1
ong_query_time = 1
2、在MYSQL控制如输入命令select sleep(2)
mysql> select sleep(2);
+----------+
| sleep(2) |
+----------+
| 0|
+----------+
1 row in set (2.00 sec)
3、再查看日志文件,会看到以下信息。
# Time: 141014 14:28:52
# User@Host: root[root] @ localhost[::1] Id: 1
# Query_time: 2.000114 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0
SET timestamp=1413268132;
select sleep(2);
附录
另外,我们还要了解解一些MYSQL数据库查看状态的命令,以便更详尽的掌控MYSQL。在控制如下执行这些命令查看mysql数据库一些运行的状态。
show [session|global]status 注:不写默认的为session..session只取出当前会话的状态,global会取出从启动到现在的状态。
showstatus 查看数据库状态,这里面的状态有很多,DBA应该了解大多数。
showstatus like ‘uptime’ 数据库启动时间(S)
showstatus like ‘com_select’ 数据库执行了多少次查询
showstatus like ‘com_update’ 数据库执行了多少次更新
showstatus like ‘com_delete’ 数据库执行了多少次删除
showstatus like ‘com_insert’ 数据库执行了多少次插入
showstatus like 'connections' 试图链接MYSQL数据库的次数;另外可用cmd下的netstat –an 查看是那些IP链接到3306上,即链接到MYSQL数据库上。
show status like 'slow_queries'; 慢查询次数。默认情况下,超过10S的为慢查询。
控制台下修改MYSQL默认的慢查询时间
show variableslike 'long_query_time' 查询默认的慢查询时间
set long_query_time = 1 设置默认的慢查询时间
开启MySQL的慢查询日志功能
默认情况下,MySQL是不会记录超过一定执行时间的SQL语句的。要开启这个功能,我们需要修改MySQL的配置文件,windows下修改my.ini,Linux下修改my.cnf文件,在[mysqld]最后增加如下命令:
slow_query_log= 1
long_query_time= 1
slow_query_log_file=c:/slow.log
解释:
slow_query_log= 1,表示开启慢查询日志功能,当然slow_query_log= 0就是关闭了(默认情况),要开启也可以直接这样写slow_query_log。
long_query_time =1,表示设置慢查询的时间为1S,默认为10S,即如果有查询超过了这个时间,将会被记录到慢查询日志中。当然在高版本的MYSQL中这个时间还可以设置成小数。
slow_query_log_file=c:/slow.log,表示慢查询日志存放的目录文件。当然这条可以不写,不写时,默认在mysql的data目录下生成“主机名_slow.log”的文件来存放日志。
测试
1、在my.ini中加入以下配置,并重启动MYSQL服务
slow_query_log = 1
ong_query_time = 1
2、在MYSQL控制如输入命令select sleep(2)
mysql> select sleep(2);
+----------+
| sleep(2) |
+----------+
| 0|
+----------+
1 row in set (2.00 sec)
3、再查看日志文件,会看到以下信息。
# Time: 141014 14:28:52
# User@Host: root[root] @ localhost[::1] Id: 1
# Query_time: 2.000114 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0
SET timestamp=1413268132;
select sleep(2);
附录
另外,我们还要了解解一些MYSQL数据库查看状态的命令,以便更详尽的掌控MYSQL。在控制如下执行这些命令查看mysql数据库一些运行的状态。
show [session|global]status 注:不写默认的为session..session只取出当前会话的状态,global会取出从启动到现在的状态。
showstatus 查看数据库状态,这里面的状态有很多,DBA应该了解大多数。
showstatus like ‘uptime’ 数据库启动时间(S)
showstatus like ‘com_select’ 数据库执行了多少次查询
showstatus like ‘com_update’ 数据库执行了多少次更新
showstatus like ‘com_delete’ 数据库执行了多少次删除
showstatus like ‘com_insert’ 数据库执行了多少次插入
showstatus like 'connections' 试图链接MYSQL数据库的次数;另外可用cmd下的netstat –an 查看是那些IP链接到3306上,即链接到MYSQL数据库上。
show status like 'slow_queries'; 慢查询次数。默认情况下,超过10S的为慢查询。
控制台下修改MYSQL默认的慢查询时间
show variableslike 'long_query_time' 查询默认的慢查询时间
set long_query_time = 1 设置默认的慢查询时间
阅读全文
0 0
- MYSQL定位慢查询
- MYSQL定位慢查询
- mysql 定位慢查询
- MYSQL定位慢查询
- mysql 优化--定位慢查询
- mysql 优化--定位慢查询
- mysql 优化--定位慢查询
- Mysql定位慢查询配置
- mysql--18110定位慢查询
- mysql优化(定位慢查询)
- mysql 优化笔记一(定位慢查询)
- MySQL慢查询的定位与优化
- MySQL优化技术:定位慢查询
- MySQL定位慢查询以及索引优化
- 慢查询定位
- 定位慢查询
- 定位慢查询(常用命令)
- MySQL优化 之 定位慢查询的sql语句
- 漫谈jvm
- 数据可视化之一matplotlib
- colResizable的替代品,自定义列宽调整
- CRC32 tools in Ubuntu /fedora
- CZMQ之可靠的请求-应答模式
- MYSQL定位慢查询
- 微信获取openid的时候报40163错的原因
- 15周 项目4
- MQTT协议
- 机器学习(31)之频繁集挖掘FP Tree详解
- 生产环境批量自动安装系统
- 解决Eclipse 64位启动时,报jvm.dll错
- 一维数组的定义方式
- Python中的文件和流