MYSQL定位慢查询
来源:互联网 发布:ntfs for mac 写在失败 编辑:程序博客网 时间:2024/04/30 16:08
在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语句
- 讨论如何抓取使用cdn背后网站的源ip地址
- 理解Javascript_10_对象模型
- Kafka的分布式架构设计与High Availability机制
- 菜鸟的mongoDB学习---(二)MongoDB 数据库,对象,集合
- hihoCoder 第 50 周欧拉路二之C实现方法
- MYSQL定位慢查询
- 简单HTTP服务器的Java实现
- C++ 关于声明,定义,类的定义,头文件作用,防止头文件在同一个编译单元重复引用,不具名空间
- JS高级编程3-函数柯里化
- OpenCV在矩阵上的卷积
- Codeforces Round #261 (Div. 2) D. Pashmak and Parmida's problem (树状数组)
- gz 文件解压缩命令
- 分支-11 计算工资(15)
- 读取文本中的文件名,根据文件名从文件夹中把文件复制到另一个文件夹