mysql慢查询分析

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

时间: 2024-10-03 17:19:20

mysql慢查询分析的相关文章

mysql慢查询分析工具和分析方法

1.mysql慢查询分析工具 1.参考文档: http://www.ttlsa.com/mysql/analyse-slow-query-log-using-anemometer/ http://isadba.com/?p=655 官方文档: https://github.com/box/Anemometer 数据库管理员一般是用percona的toolkit工具来分析MySQL慢查询记录,但是不够直观. 下面介绍一款比较直观的工具来统计分析MySQL慢查询记录anemometer. 在使用之前

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

说明: 操作系统:CentOS 5.X 64位 MySQL版本:mysql-5.5.35 MySQL配置文件:/etc/my.cnf MySQL 数据库存放目录:/data/mysql 实现目的:开启MySQL慢查询日志功能,安装使用MySQL慢查询分析mysqlsla 具体操作: 一.开启MySQL慢查询功能 mysql -u  root -p  #进入MySQL控制台 show variables like '%slow%';   #查看MySQL慢查询是否开启 set global slo

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

00 前言 在进行mysql性能优化的时候,第一个想到的便是查看慢sql. 但是对于慢sql有没有什么好的工具进行分析呢? 推荐两个工具mysqldumpslow及pt-query-digest. mysqlslowdump较为简单,常用命令: #得到返回记录最多的20个sql mysqldumpslow -s r -t 20 slowSQl.log # 得到平均访问次数最多的20条sql mysqldumpslow -s ar -t 20 slowSQl.log 如果linux上没有安装mys

mysql慢查询分析工具 mysqlsla 安装

概述 mysqlsla 是一款很不错的mysql慢查询日志分析工具,而且简单易用.mysqlsla 是用perl编写的脚本,运行需要perl-DBI和per-DBD-Mysql两模块的支持. 安装环境 centos 7.1 percona 5.7 2.安装依赖包 yum install perl perl-DBI perl-DBD-Mysql 3.安装 tar zxvf mysqlsla-2.03.tar.gz cd mysqlsla-2.03 perl Makefile.PL make &&am

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

Mysql慢查询开启 Mysql的查询讯日志是Mysql提供的一种日志记录,它用来记录在Mysql中响应时间超过阈值的语句,具体指运行时间超过long_query_time值得SQL,则会被记录到慢查询日志中.long_query_time的默认为10,意识是运行10秒以上的语句.由它来看那些SQL语句超出了我们的最大忍耐值,比如一条SQL执行超过了5秒,我们就算慢查询,我们就可以结合Explain进行分析.默认Mysql没有开启慢查询,需要我们说动设置这个参数.当然,如果不是调优需要的话,一般

mysql慢查询分析工具之PT

1. 工具简介pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog.General log.slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析.可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间.次数.占比等,可以借助分析结果找出问题进行优化.pt-query-digest是一个perl脚本,只需下载并赋权即可执行.[[e

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

一.简单安装 wget percona.com/get/pt-query-digest chmoe u+x pt-query-digest 二.简单使用 ./pt-query-digest /var/log/mysql/mysql-slow.log | more 参考文章:http://blog.itpub.net/29773961/viewspace-2024992/ pt-query-digest是一套帮助DBA管理mysql的工具集percona-toolkit下的一个小工具,由perco

mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用

系统性能调优尤其是MySQL数据库性能调优一个主要依据就是慢查询日志了.原来在ubantu 或centos 上有一个强大工具就是 percona toolkit,那么在mac 上如何使用pt-query-digest呢? 下载 percona toolkit 访问 http://www.percona.com/downloads/percona-toolkit , 采用源代码安装,下载最新稳定版2.2.7. 安装 并预先填好安装过程中的那些坑 进入下载的目录,开练: $ tar xvfz per

mysql慢查询分析工具 pt-query-digest

1. 慢查询简介 http://hllnihao.iteye.com/blog/1461472 2. pt-query-digest安装 http://blog.csdn.net/seteor/article/details/24017913 [[email protected] ]# wget percona.com/get/pt-query-digest [[email protected] ]# chmod u+x pt-query-digest 3. 使用 (1)直接分析慢查询文件: p