一、使用mysql慢查询日志对有效率问题的sql进行监控
      1)开启慢查询
      show variables like ‘slow_query_log’;//查看是否开启慢查询日志
      set global slow_query_log_file=‘/mysql/‘; //设置慢查询日志的位置
      set global log_queries_not_using_indexes=on;//设置没有使用索引的sql语句
      set global long_query_time=1;//设置超过1秒的sql语句进行记录。
     注意:这里设置了long_query_time后,会发现设置不成功,可能是一个bug,需要重新开启一个终端,再查询一下设置,会发现生效了。

2)查看慢查询日志的格式
               # Time: 151115  6:35:08  
       # User@Host: root[root] @ localhost []
       # Query_time: 0.007896  Lock_time: 0.006150 Rows_sent: 200  Rows_examined: 200
       SET timestamp=1447540508;
       select * from actor;

3)工具一:mysqldumpslow
      mysqldumpslow -t 3 /var/lib/mysql/localhost-centos6-slow.log
      前三条的日志
      格式:
      Count: 1  Time=0.00s (0s)  Lock=0.01s (0s)  Rows=200.0 (200), root[root]@localhost
      select * from actor

4)工具二:pt-query-digest工具
        安装:
                   [root@localhost-centos6 ~]# wget percona.com/get/pt-query-digest
                    [root@localhost-centos6 ~]# chmod u+x pt-query-digest
                    [root@localhost-centos6 ~]# mv /root/pt-query-digest /usr/bin/ 
        用法:pt-query-digest slow-log > show_report.log //输出到文件
        
             pt-query-digest slow-log | more
        该工具需要深入学习……

5)如何通过慢查询日志寻找问题
        1)查询次数多,且每次查询占用时间长的sql
                  通常为pt-query-digest分析的前几个查询
                  2)I/O大的sql
                   注意:pt-query-digest中得Rows examine项
                  3)未命中索引的sql
                     注意:pt-query-digest中得Rows examine和Rows send对比
        f)如何分析sql语句
                使用explain查询sql执行计划

mysql> explain select * from customer;
+----+-------------+----------+------+---------------+------+---------+------+------+-------+
| id | select_type | table    | type | possible_keys | key  | key_len | ref  | rows | Extra |
+----+-------------+----------+------+---------------+------+---------+------+------+-------+
|  1 | SIMPLE      | customer | ALL  | NULL          | NULL | NULL    | NULL |  671 |       |
+----+-------------+----------+------+---------------+------+---------+------+------+-------+
1 row in set (0.01 sec)

解释:
        table:表名;
        type:连接的类型,const、eq_reg、ref、range、index和ALL;const:主键、索引;eq_reg:主键、索引的范围查找;ref:连接的查找(join),range:索引的范围查找;index:索引的扫描;
        possible_keys:可能用到的索引;
        key:实际使用的索引;
        key_len:索引的长度,越短越好;
        ref:索引的哪一列被使用了,常数较好;
        rows:mysql认为必须检查的用来返回请求数据的行数;
        extra:using filesort、using temporary(常出现在使用order by时)时需要优化。

mysql性能优化学习笔记(2)如何发现有问题的sql的更多相关文章

  1. mysql性能优化学习笔记

    mysql性能优化 硬件对数据库的影响 CPU资源和可用内存大小 服务器硬件对mysql性能的影响 我们的应用是CPU密集型? 我们的应用的并发量如何? 数量比频率更好 64位使用32位的服务器版本 ...

  2. mysql性能优化学习笔记-参数介绍及优化建议

    MySQL服务器参数介绍 mysql参数介绍(客户端中执行),尽量只修改session级别的参数. 全局参数(新连接的session才会生效,原有已经连接的session不生效) set global ...

  3. mysql性能优化学习笔记(1)优化目的、方向及数据库准备

    前言: 最近参加面试,问到了很多关于mysql的优化方面的问题,回答的不是很好,也是因为原先做的项目流量不是很大,所以对mysql优化不是太了解,所以趁着周末,恶补一下. 本文来源于慕课网sqlerc ...

  4. mysql性能优化学习笔记-存储引擎

    mysql体系架构 客户端(java.php.python等) mysql服务层(连接管理器.查询解析器.查询优化器.查询缓存) mysql存储引擎(innodb.myisam等) 存储引擎针对表而言 ...

  5. mysql性能优化学习笔记(6)数据库配置优化&硬件优化

    一.操作系统配置优化:          1. 网络方面,修改/etc/sysctl.conf文件,增加tcp支持的队列数,减少断开连接时,资源的回收.          2. 打开文件数的限制.修改 ...

  6. mysql性能优化学习笔记(4)索引的优化

    一.选择合适的索引列     1.在where,group by,order by,on从句中出现的列     2.索引字段越小越好(因为数据库的存储单位是页,一页中能存下的数据越多越好 )      ...

  7. mysql性能优化学习笔记(3)常见sql语句优化

    一.max()优化mysql> explain select max(payment_date) from payment;+----+-------------+---------+----- ...

  8. mysql性能优化学习笔记(5)数据库结构优化

    一.选择合适的数据类型    1.使用可存下数据的最小的数据类型    2.使用简单地数据类型,Int<varchar    3.尽可能使用not null定义字段    4.尽量少用text, ...

  9. Pandas 性能优化 学习笔记

    摘要 本文介绍了使用 Pandas 进行数据挖掘时常用的加速技巧. 实验环境 import numpy as np import pandas as pd print(np.__version__) ...

随机推荐

  1. go import

    import "fmt"最常用的一种形式 import "./test"导入同一目录下test包中的内容 import f "fmt"导入f ...

  2. js 常用正则表达式(不断维护中)

    身份证:pattern="/^[1-9]{1}[0-9]{14}$|^[1-9]{1}[0-9]{16}([0-9]|[xX])$/"

  3. 轻松搞定Ajax(分享下自己封装ajax函数,其实Ajax使用很简单,难是难在你得到数据后来怎样去使用这些数据)

    hey,guys!今天我们一起讨论下ajax吧!此文只适合有一定ajax基础,但还是模糊状态的同志,当然高手也可以略过~~~ 一.概念 Ajax(Asynchronous Javascript + X ...

  4. Web服务器和动态语言如何交互--CGI&FastCGI&FPM浅谈

    一个用户的Request是如何经过Web服务器(Apache,Nginx,IIS,Light)与后端的动态语言(如PHP等)进行交互并将结果返回给用户的呢? 本文浅谈个人观点,可能有误,欢迎拍砖,共同 ...

  5. Python网页信息采集:使用PhantomJS采集淘宝天猫商品内容

    1,引言 最近一直在看Scrapy 爬虫框架,并尝试使用Scrapy框架写一个可以实现网页信息采集的简单的小程序.尝试过程中遇到了很多小问题,希望大家多多指教. 本文主要介绍如何使用Scrapy结合P ...

  6. Objextive-C几道小题目笔记

    //掷骰子题,掷骰子100次,输出每个号出现的次数 void one() { for (int i=1; i<=100; i++) { int a = arc4random() % 6 +1; ...

  7. Android之SurfaceView学习

    首先我们先来看下官方API对SurfaceView的介绍 SurfaceView的API介绍 Provides a dedicated drawing surface embedded inside ...

  8. VS调试时监视上一个错误代码和错误的文本描述

    以前我都是用GetLastError()然后在MSDN里面查错误原因的.现在才知道有很简便的方法: 在Watch窗口选择一行,然后输入$err,hr

  9. 点击页面其它地方隐藏该div的两种思路

    思路一 第一种思路分两步 第一步:对document的click事件绑定事件处理程序,使其隐藏该div 第二步:对div的click事件绑定事件处理程序,阻止事件冒泡,防止其冒泡到document,而 ...

  10. Web常用函数介绍(LoadRunner相关)

    介绍大纲:1. web_url2. web_image3. web_link4. web_submmit_form 详细介绍: 一. web_url web_url 语法: Int Web_url(c ...