MySQL慢查询查找和调优测试,接下来详细介绍,需要了解的朋友可以参考下。
本文参考自:http://www.jbxue.com/db/4376.html

 编辑 my.cnf或者my.ini文件,去除下面这几行代码的注释: 
log_slow_queries = /var/log/mysql/mysql-slow.log 
long_query_time = 2 
log-queries-not-using-indexes 



这将使得慢查询和没有使用索引的查询被记录下来。 
这样做之后,对mysql-slow.log文件执行tail -f命令,将能看到其中记录的慢查询和未使用索引的查询。 
随便提取一个慢查询,执行explain:

explain low_query


  
你将看到下面的结果: 
+----+-------------+---------------------+------+---------------+------+---------+------+------+-------------+ 
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | 
+----+-------------+---------------------+------+---------------+------+---------+------+------+-------------+ 
| 1 | SIMPLE | some_table | ALL | NULL | NULL | NULL | NULL | 166 | Using where | 
+----+-------------+---------------------+------+---------------+------+---------+------+------+-------------+ 
注意上面的rows和key列。rows显示该查询影响了多少行记录,我们不想让这个值太大。key显示用了哪个索引,为NULL时表示查询未用任何索引。 
如果想让查询更快,你或许需要为某些列增加索引: 
CREATE INDEX myapp_mytable_myfield_idx on myapp_mytable(myfield); 
除了配置mysql配置文件来实现记录mysql慢查询外,还有下面的方法可以记录慢查询: 

SELECT t.TABLE_SCHEMA AS `db`, 
t.TABLE_NAME AS `table`, 
s.INDEX_NAME AS `index name`, 
s.COLUMN_NAME AS `FIELD name`, 
s.SEQ_IN_INDEX `seq IN index`, 
s2.max_columns AS `# cols`, 
s.CARDINALITY AS `card`, 
t.TABLE_ROWS AS `est rows`, --// www.jbxue.com
ROUND(((s.CARDINALITY / IFNULL(t.TABLE_ROWS, 0.01)) * 100), 2) AS `sel %` 
FROM INFORMATION_SCHEMA.STATISTICS s 
INNER JOIN INFORMATION_SCHEMA.TABLES t ON s.TABLE_SCHEMA = t.TABLE_SCHEMA AND s.TABLE_NAME = t.TABLE_NAME 
INNER JOIN ( 
SELECT TABLE_SCHEMA, TABLE_NAME, INDEX_NAME, MAX(SEQ_IN_INDEX) AS max_columns 
FROM INFORMATION_SCHEMA.STATISTICS 
WHERE TABLE_SCHEMA != 'mysql' GROUP BY TABLE_SCHEMA, TABLE_NAME, INDEX_NAME ) AS s2 ON s.TABLE_SCHEMA = s2.TABLE_SCHEMA AND s.TABLE_NAME = s2.TABLE_NAME AND s.INDEX_NAME = s2.INDEX_NAME 
WHERE t.TABLE_SCHEMA != 'mysql' /* Filter out the mysql system DB */ 
AND t.TABLE_ROWS > 10 /* Only tables with some rows */ 
AND s.CARDINALITY IS NOT NULL /* Need at least one non-NULL value in the field */ 
AND (s.CARDINALITY / IFNULL(t.TABLE_ROWS, 0.01)) < 1.00 /* unique indexes are perfect anyway */ 
ORDER BY `sel %`, s.TABLE_SCHEMA, s.TABLE_NAME /* DESC for best non-unique indexes */ 
LIMIT 10; 

MySQL慢查询查找和调优测试的更多相关文章

  1. Mysql运行状态查询命令及调优详解

    (转载自点击打开链接) MySQL运行状态及调优(一) 一.查看MySQL运行情况SHOW STATUS; 二.查看INNODB数据库引擎运行状态SHOW ENGINE INNODB STATUS; ...

  2. Mysql千万级数据性能调优配置

    背景: 笔者的源数据一张表大概7000多万条,数据大小36G,索引6G,加起来表空间有40G+,类似的表有4张,总计2亿多条 数据库mysql,引擎为innodb,版本5.7,服务器内存256G,物理 ...

  3. MySQL 5.6初始配置调优

    原文链接: What to tune in MySQL 5.6 after installation原文日期: 2013年09月17日翻译日期: 2014年06月01日翻译人员: 铁锚 随着 大量默认 ...

  4. 用MySQL的optimizer_trace进行sql调优

    在我们调优MySQL的SQL时候,通常使用三种工具进行查看sql执行的效率,explain.profile.optimizer_trace.前两个经常被人使用,由于第三个难度较大,大家使用的较少,下面 ...

  5. mysql 开启日志与性能调优

    #查看日期情况 #show variables like '%general%'; #开启日志 #SET GLOBAL general_log = 'On'; #指定日志文件 #SET GLOBAL  ...

  6. Tomcat 调优测试

    测试环境: OS: Ubuntu14.04 64位 (运行在Docker1.9) CPU: Intel i3 双核四线程 Mem: 8G Tomcat版本: Tomcat8.5 Java SDK版本: ...

  7. MYSQL数据库的设计与调优

    优化思路: 1.检查数据表结构,改善不完善设计 2.跑一遍主要业务,收集常用的数据库查询SQL 3.分析查询SQL,适当拆分,添加索引等优化查询 4.优化SQL的同时,优化代码逻辑 5.添加本地缓存和 ...

  8. Mysql 了解changeBuffer 与 purge 调优

    需要删除.新增记录或更新一个数据页时,如果数据页在内存中就直接更新,而如果这个数据页还没有在内存中的话,在不影响数据一致性的前提下,InooDB 会将这些更新操作缓存在 change buffer中, ...

  9. JVM 调优测试 之 故意分配小的堆空间,观察gc回收打印的内容

    测试代码如下: @Test public void testPrintGcDetail(){ HashMap<String, List> gcMap = new HashMap<&g ...

随机推荐

  1. 【java】初始化一个指定大小的list,在指定位置set存入元素,下标越界

    List使用过程中,出现这样的问题,出现异常:java.lang.IndexOutOfBoundsException: Index: 1, Size: 0 List<String> lis ...

  2. iOS:CoreData数据库的使用三(数据库和tableView表格一起使用)

    CoreData数据库是用来持久性存储数据的,那么,我们再从该数据库中取出数据干什么呢?明显的是为了对数据做操作,这个过程中可以将它们直观的显示出来,即通过表格的形式显示出来.CoreData配合ta ...

  3. 关于Predicate<T>委托

    Predicate<T>委托在.NET类类库中经常出现,此委托的定义如下: public delegatebool Predicate<T>(T obj); 从其定义可以看到, ...

  4. C++构造函数、析构函数、虚析构函数

    1.构造函数 C++中的构造函数是用于初始化类的各种变量以及分配资源等.主要的注意事项是: (1)在继承关系中先初始化父类对象后初始化子类对象. (2)在一个类中按照变量的声明顺序,对类中的变量进行初 ...

  5. JavaScript实现计算器功能

    截图 : cal.js var Class = {} ; Class.calculation = function(){ var calculation = {} ; calculation.resu ...

  6. Forms.Timer、Timers.Timer、Threading.Timer的研究

    .NET Framework里面提供了三种Timer System.Windows.Forms.Timer System.Timers.Timer System.Threading.Timer 一.S ...

  7. poj 1260 Pearls 斜率优化dp

    这个题目数据量很小,但是满足斜率优化的条件,可以用斜率优化dp来做. 要注意的地方,0也是一个决策点. #include <iostream> #include <cstdio> ...

  8. Python——管理属性(1)

    管理属性 这里将展开介绍前面提到的[属性拦截]技术.包含下面内容: [1]__getattr__和__setattr__方法.把没有定义的属性获取和全部的属性赋值指向通用的处理器方法 [2]__get ...

  9. 30款超酷的HTTP 404页面未找到错误设计

    访问网站过程中,我们最常看到的HTTP错误就是404页面未找到错误,很多网站都针对这个错误设计自己富有个性的页面,在今天这篇文章中我们就分 享30多款设计非常霸道的404错误页面,希望大家能够找到更多 ...

  10. PL/SQL 之 基础

    PL/SQL(Procedural Language extensions to SQL)是Oracle 对标准 SQL 语言的过程化扩展,是专门用于各种环境下对 Oracle 数据库进行访问和开发的 ...