MySQL慢查询优化

来源:互联网 发布:程序员的修行 编辑:程序博客网 时间:2024/05/01 03:07

本文是对一些网上资料的总结,具体涉及以下网址:

http://database.ctocio.com.cn/273/13146273.shtml


开启慢查询:

具体参考:http://blog.csdn.net/haiqiao_2010/article/details/25138099

1、配置文件方式:

Linux下编辑etc/文件夹下的my.cnf

Windows下编辑my.ini

添加以下配置信息:

  1. [mysqlld]  
  2. long_query_time=2  
  3.   
  4. #5.0、5.1等版本配置如下选项  
  5. log-slow-queries="mysql_slow_query.log"  
  6. #5.5及以上版本配置如下选项  
  7. slow-query-log=On  
  8. slow_query_log_file="mysql_slow_query.log"  
  9.   
  10. log-query-not-using-indexes 

2、通过MySQL自带客户端,开启慢查询日志

     cmd进入bin目录下,运行 mysql -uroot -p命令

    show variables like 'slow%'查看慢查询相关变量

    如果变量'slow-query-log'的值是OFF,则运行

   set global slow-query-log=ON


定位慢查询语句:


可以使用MySQL自带的mysqldumpslow命令,其用法如下

排序参数-s,取值有 c(按照记录次数排序)、t(按照查询的发生时间排序)、l(按照耗时排序)、r(按照结果集数目排序),ac、at、al、ar表示相应的倒序。 

取前多少个-t,即 top n

正则匹配-g


分析慢查询原因:

Explain或者DESC命令

DESC命令的使用很简单,例:sql>desc select * from easy_sys_user;

Explain 待续……


优化慢查询:

1、新建索引

为了减少磁盘IO消耗,MySQL的索引存储采用B+树结构,在B+树中,如果数据项是复合结构,则最左边的是第一比较因子,如果没有给出第一比较因子的值,则会返回所有数据,即索引没有起到作用。另如果遇到的比较因子是一个范围时,它后面的所有比较因子将都用不上。

根据B+树的这种特性,要求优化慢查询建立联合索引的时候坚持最左匹配原则,即查询条件是等值查询的字段作为联合索引的第一个字段。

Explain 待续……



0 0