mysql慢查询分析

Posted: 29. 08. 2014 | AuthorzdzCategorymysql

MySQL 慢查询日志分析

1. pt-query-digest分析慢查询日志
pt-query-digest –report slow.log

2. 报告最近半个小时的慢查询:
pt-query-digest –report –since 1800s slow.log

3. 报告一个时间段的慢查询:
pt-query-digest –report –since '2013-02-10 21:48:59' –until '2013-02-16 02:33:50' slow.log

4. 报告只含select语句的慢查询:
pt-query-digest –filter '$event->{fingerprint} =~ m/^select/i' slow.log

5. 报告针对某个用户的慢查询:
pt-query-digest –filter '($event->{user} || "") =~ m/^root/i' slow.log

6. 报告所有的全表扫描或full join的慢查询:
pt-query-digest –filter '(($event->{Full_scan} || "") eq "yes") || (($event->{Full_join} || "") eq "yes")' slow.log

将慢查询日志的分析结果可视化
Query-Digest-UI

其实,这是一个非常简单和直接的工具,浏览和统计Mysql慢查询,基于AJAX的Web界面。

配置Query-Digest-UI:

下载:
wget https://nodeload.github.com/kormoc/Query-Digest-UI/zip/master
unzip Query-Digest-UI-master.zip

查询分析结果可视化步骤如下:

1)创建相关数据库表

– install.sql

– Create the database needed for the Query-Digest-UI

DROP DATABASE IF EXISTS slow_query_log;

CREATE DATABASE slow_query_log;

USE slow_query_log;

– Create the global query review table

CREATE TABLE `global_query_review` (

`checksum` bigint(20) unsigned NOT NULL,

`fingerprint` text NOT NULL,

`sample` longtext NOT NULL,

`first_seen` datetime DEFAULT NULL,

`last_seen` datetime DEFAULT NULL,

`reviewed_by` varchar(20) DEFAULT NULL,

`reviewed_on` datetime DEFAULT NULL,

`comments` text,

`reviewed_status` varchar(24) DEFAULT NULL,

PRIMARY KEY (`checksum`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

– Create the historical query review table

CREATE TABLE `global_query_review_history` (

`hostname_max` varchar(64) NOT NULL,

`db_max` varchar(64) DEFAULT NULL,

`checksum` bigint(20) unsigned NOT NULL,

`sample` longtext NOT NULL,

`ts_min` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

`ts_max` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

`ts_cnt` float DEFAULT NULL,

`Query_time_sum` float DEFAULT NULL,

`Query_time_min` float DEFAULT NULL,

`Query_time_max` float DEFAULT NULL,

`Query_time_pct_95` float DEFAULT NULL,

`Query_time_stddev` float DEFAULT NULL,

`Query_time_median` float DEFAULT NULL,

`Lock_time_sum` float DEFAULT NULL,

`Lock_time_min` float DEFAULT NULL,

`Lock_time_max` float DEFAULT NULL,

`Lock_time_pct_95` float DEFAULT NULL,

`Lock_time_stddev` float DEFAULT NULL,

`Lock_time_median` float DEFAULT NULL,

`Rows_sent_sum` float DEFAULT NULL,

`Rows_sent_min` float DEFAULT NULL,

`Rows_sent_max` float DEFAULT NULL,

`Rows_sent_pct_95` float DEFAULT NULL,

`Rows_sent_stddev` float DEFAULT NULL,

`Rows_sent_median` float DEFAULT NULL,

`Rows_examined_sum` float DEFAULT NULL,

`Rows_examined_min` float DEFAULT NULL,

`Rows_examined_max` float DEFAULT NULL,

`Rows_examined_pct_95` float DEFAULT NULL,

`Rows_examined_stddev` float DEFAULT NULL,

`Rows_examined_median` float DEFAULT NULL,

`Rows_affected_sum` float DEFAULT NULL,

`Rows_affected_min` float DEFAULT NULL,

`Rows_affected_max` float DEFAULT NULL,

`Rows_affected_pct_95` float DEFAULT NULL,

`Rows_affected_stddev` float DEFAULT NULL,

`Rows_affected_median` float DEFAULT NULL,

`Rows_read_sum` float DEFAULT NULL,

`Rows_read_min` float DEFAULT NULL,

`Rows_read_max` float DEFAULT NULL,

`Rows_read_pct_95` float DEFAULT NULL,

`Rows_read_stddev` float DEFAULT NULL,

`Rows_read_median` float DEFAULT NULL,

`Merge_passes_sum` float DEFAULT NULL,

`Merge_passes_min` float DEFAULT NULL,

`Merge_passes_max` float DEFAULT NULL,

`Merge_passes_pct_95` float DEFAULT NULL,

`Merge_passes_stddev` float DEFAULT NULL,

`Merge_passes_median` float DEFAULT NULL,

`InnoDB_IO_r_ops_min` float DEFAULT NULL,

`InnoDB_IO_r_ops_max` float DEFAULT NULL,

`InnoDB_IO_r_ops_pct_95` float DEFAULT NULL,

`InnoDB_IO_r_bytes_pct_95` float DEFAULT NULL,

`InnoDB_IO_r_bytes_stddev` float DEFAULT NULL,

`InnoDB_IO_r_bytes_median` float DEFAULT NULL,

`InnoDB_IO_r_wait_min` float DEFAULT NULL,

`InnoDB_IO_r_wait_max` float DEFAULT NULL,

`InnoDB_IO_r_wait_pct_95` float DEFAULT NULL,

`InnoDB_IO_r_ops_stddev` float DEFAULT NULL,

`InnoDB_IO_r_ops_median` float DEFAULT NULL,

`InnoDB_IO_r_bytes_min` float DEFAULT NULL,

`InnoDB_IO_r_bytes_max` float DEFAULT NULL,

`InnoDB_IO_r_wait_stddev` float DEFAULT NULL,

`InnoDB_IO_r_wait_median` float DEFAULT NULL,

`InnoDB_rec_lock_wait_min` float DEFAULT NULL,

`InnoDB_rec_lock_wait_max` float DEFAULT NULL,

`InnoDB_rec_lock_wait_pct_95` float DEFAULT NULL,

`InnoDB_rec_lock_wait_stddev` float DEFAULT NULL,

`InnoDB_rec_lock_wait_median` float DEFAULT NULL,

`InnoDB_queue_wait_min` float DEFAULT NULL,

`InnoDB_queue_wait_max` float DEFAULT NULL,

`InnoDB_queue_wait_pct_95` float DEFAULT NULL,

`InnoDB_queue_wait_stddev` float DEFAULT NULL,

`InnoDB_queue_wait_median` float DEFAULT NULL,

`InnoDB_pages_distinct_min` float DEFAULT NULL,

`InnoDB_pages_distinct_max` float DEFAULT NULL,

`InnoDB_pages_distinct_pct_95` float DEFAULT NULL,

`InnoDB_pages_distinct_stddev` float DEFAULT NULL,

`InnoDB_pages_distinct_median` float DEFAULT NULL,

`QC_Hit_cnt` float DEFAULT NULL,

`QC_Hit_sum` float DEFAULT NULL,

`Full_scan_cnt` float DEFAULT NULL,

`Full_scan_sum` float DEFAULT NULL,

`Full_join_cnt` float DEFAULT NULL,

`Full_join_sum` float DEFAULT NULL,

`Tmp_table_cnt` float DEFAULT NULL,

`Tmp_table_sum` float DEFAULT NULL,

`Filesort_cnt` float DEFAULT NULL,

`Filesort_sum` float DEFAULT NULL,

`Tmp_table_on_disk_cnt` float DEFAULT NULL,

`Tmp_table_on_disk_sum` float DEFAULT NULL,

`Filesort_on_disk_cnt` float DEFAULT NULL,

`Filesort_on_disk_sum` float DEFAULT NULL,

`Bytes_sum` float DEFAULT NULL,

`Bytes_min` float DEFAULT NULL,

`Bytes_max` float DEFAULT NULL,

`Bytes_pct_95` float DEFAULT NULL,

`Bytes_stddev` float DEFAULT NULL,

`Bytes_median` float DEFAULT NULL,

UNIQUE KEY `hostname_max` (`hostname_max`,`checksum`,`ts_min`,`ts_max`),

KEY `ts_min` (`ts_min`),

KEY `checksum` (`checksum`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2) 创建数据库账号

$ mysql -uroot -p -h 192.168.1.190 < install.sql

$ mysql -uroot -p -h 192.168.1.190 -e "grant ALL ON slow_query_log.* to 'slowlog'@'%' IDENTIFIED BY '123456';"

3) 配置Query-Digest-UI

git clone https:

//github.com/kormoc/Query-Digest-UI.git

cd Query-Digest-UI

cp config.php.example config.php

vi config.php

$reviewhost = array(

// Replace hostname and database in this setting

// use host=hostname;port=portnum if not the default port

'dsn'           => 'mysql:host=192.168.1.190;port=3306;dbname=slow_query_log',

'user'          => 'slowlog',

'password'      => '123456',

// See http://www.percona.com/doc/percona-toolkit/2.1/pt-query-digest.html#cmdoption-pt-query-digest–review

'review_table'  => 'global_query_review',

// This table is optional. You don't need it, but you lose detailed stats

// Set to a blank string to disable

// See http://www.percona.com/doc/percona-toolkit/2.1/pt-query-digest.html#cmdoption-pt-query-digest–review-history

'history_table' => 'global_query_review_history',

);

4)使用pt-query-digest分析日志并将分析结果导入数据库

pt-query-digest –user=slowlog –password=123456 –review h=192.168.1.190,D=slow_query_log,t=global_query_review –review-history h=192.168.1.190,D=slow_query_log,t=global_query_review_history –no-report –limit=0% –filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME\"" /usr/local/mysql/data/slow.log

mysql慢查询分析的更多相关文章

  1. Linux下MySQL慢查询分析mysqlsla安装使用

    说明: 操作系统:CentOS 5.X 64位 MySQL版本:mysql-5.5.35 MySQL配置文件:/etc/my.cnf MySQL 数据库存放目录:/data/mysql 实现目的:开启 ...

  2. Mysql优化_慢查询开启说明及Mysql慢查询分析工具mysqldumpslow用法讲解

    Mysql优化_慢查询开启说明及Mysql慢查询分析工具mysqldumpslow用法讲解   Mysql慢查询开启 Mysql的查询讯日志是Mysql提供的一种日志记录,它用来记录在Mysql中响应 ...

  3. mysql慢查询分析工具比较与实战

    00 前言 在进行mysql性能优化的时候,第一个想到的便是查看慢sql. 但是对于慢sql有没有什么好的工具进行分析呢? 推荐两个工具mysqldumpslow及pt-query-digest. m ...

  4. mysql慢查询分析工具 mysqlsla 安装

    概述 mysqlsla 是一款很不错的mysql慢查询日志分析工具,而且简单易用.mysqlsla 是用perl编写的脚本,运行需要perl-DBI和per-DBD-Mysql两模块的支持.mysql ...

  5. MySQL慢查询分析工具pt-query-digest详解

    一.简介 pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog.General log.slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdu ...

  6. mysql慢查询分析工作pt-query-digest的使用

    一.简单安装 wget percona.com/get/pt-query-digest chmoe u+x pt-query-digest 二.简单使用 ./pt-query-digest /var/ ...

  7. (转)MySQL慢查询分析优化 + MySQL调优

    .long_query_time的默认值为10,意思是运行10S以上的语句. .临时设置开启慢查询日志 mysql> show variables like '%slow_query_log%' ...

  8. mySql慢查询分析原因

    1.分析查询慢的语句,并记录到日志中 查看: http://blog.csdn.net/haiqiao_2010/article/details/25138099

  9. 如何查找MySQL中查询慢的SQL语句

    如何查找MySQL中查询慢的SQL语句 更多 如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow ...

随机推荐

  1. 阶段3 1.Mybatis_12.Mybatis注解开发_8 mybatis注解开发使用二级缓存

    执行两次都查询userId为57的数据.测试一级缓存 返回true 新建测试类 ,测试二级缓存 二级缓存的配置 首先是全局配置,不配置其实也是可以的.默认就是开启的.这里为了演示配置上 dao类里面进 ...

  2. 我们公司的delphi代码(胆不是我写的!),看看,你觉得怎么样

    unit unt_LotBill_dyc; interface uses windows, SysUtils, Classes, ComCtrls, Forms, Controls, StrUtils ...

  3. Hibernate框架 初识 ORM概念

    Hibernate概述 Hibernate是一个ORM(对象关系映射)映射框架,它的核心思想就是在底层对JDBC进行了一次封装. 什么是框架 IT语境中的框架,特指为解决一个开放性问题而设计的具有一定 ...

  4. 关于JS的prototype详解

    JavaScript面向对象 构造函数和原型链 首先,我们要先了解一下类的概念,JavaScript 本身是一种面向对象的语言,它所涉及的元素根据其属性的不同都依附于某一个特定的类.我们所常见的类包括 ...

  5. 【翻唱】学习日语歌 (青鸟)火影忍者 OP

    我的翻唱:https://node.kg.qq.com/play?s=Q1cY4PQ2-2VP6QOM&g_f=personal 中文音译: 哈巴哒伊哒啦 摸多啦呐伊哆伊迭 内杂西耷诺哇 啊哦 ...

  6. python__005

    一.字符串格式化 #字符串的拼接#msg='i am a best boy'+'非常帅'print(msg)name=input('name:')hobby=input(('hobby:'))age= ...

  7. cmd命令简单别木马的蛛丝马迹

    一些基本的Windows命令往往可以识别木马的蛛丝马迹,而且在保护网络安全上起到很大的作用. 检测网络连接 如果你怀疑自己的计算机上被别人安装了木马,或者是中了病毒,但是手里没有完善的工具来检测是不是 ...

  8. Java 8中处理集合的优雅姿势——Stream

    在Java中,集合和数组是我们经常会用到的数据结构,需要经常对他们做增.删.改.查.聚合.统计.过滤等操作.相比之下,关系型数据库中也同样有这些操作,但是在Java 8之前,集合和数组的处理并不是很便 ...

  9. input type=file accept中文件格式限制

    原文链接:https://blog.csdn.net/usuallyuser/article/details/83060341 accept="application/msexcel,app ...

  10. 常用DOS命令及编程软件fa

    1.常用的dos命令(应用) 在接触集成开发环境之前,我们需要使用命令行窗口对Java程序进行编译和运行,所以需要知道dos命令. 打开命令行窗口的方式:win + r打开运行窗口对java程序进行编 ...