您的位置:首页 > 产品设计 > UI/UE

mysql慢查询Slow Query Log和未使用索引(Not Using Indexes)查询配置和使用

2010-09-29 11:38 911 查看
mysql的“慢查询”指的是超过了允许的最大查询时间(
long_query_time
)的sql语句,而“未使用索引”查询顾名思义就是查询语句没有使用到索引的sql语句。

慢查询配置和使用

在msyqld的启动配置文件或命令行参数中增加以下参数

long_query_time=1

log-slow-queries=/var/mysql/logs/slow.log

long_query_time参数表示的是慢查询的度量时间,单位是秒,最小是1,缺省值是10,凡是执行时间超过long_query_time的sql语句都会记录到慢查询日志中。

--log-slow-queries[=
file_name
]
的file_name参数可选,缺省值是
host_name
-slow.log[/code],如果指定了file_name参数的话,mysql就会把慢查询的日志记录到file_name所设定的文件中,如果file_name提供的是一个相对路径,mysql会把日志记录到mysql的data目录中。

未使用索引查询配置和使用

在mysql的启动配置文件或命令行参数中增加
--log-queries-not-using-indexes
参数就可以启用未使用索引查询语句了,日志记录的文件就是log-slow-queries对应的文件。

//mysql.conf

log-queries-not-using-indexes


使用案例

mysql的配置如下

[mysqld]

#Slow Query log
long_query_time=3

log-slow-queries

# Log queries that is not using indexes
log-queries-not-using-indexes

执行以下命令

select sleep(1);

select sleep(3);

select * from t1;

日志内容如下

D:/MySQL/MySQL Server 5.1/bin/mysqld, Version: 5.1.31-community-log (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: (null)
Time                 Id Command    Argument
# Time: 090625 12:58:09
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 3.000077  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1245905889;
select sleep(3);
# Time: 090625 12:58:42
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 0.046876  Lock_time: 0.031251 Rows_sent: 0  Rows_examined: 0
SET timestamp=1245905922;
select * from t1;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  query mysql file sql command user