加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MYSQL教程对MySQL慢查询日志进行分析的基本教程

发布时间:2020-12-12 00:50:59 所属栏目:MySql教程 来源:网络整理
导读:《MYSQL教程对MySQL慢查询日志进行分析的基本教程》要点: 本文介绍了MYSQL教程对MySQL慢查询日志进行分析的基本教程,希望对您有用。如果有疑问,可以联系我们。 MYSQL实例 0、首先查看当前是否开启慢查询: MYSQL实例 (1)快速办法,运行sql语句 MYSQL实例 s

《MYSQL教程对MySQL慢查询日志进行分析的基本教程》要点:
本文介绍了MYSQL教程对MySQL慢查询日志进行分析的基本教程,希望对您有用。如果有疑问,可以联系我们。

MYSQL实例0、首先查看当前是否开启慢查询:

MYSQL实例(1)快速办法,运行sql语句

MYSQL实例
show VARIABLES like "%slow%" 

MYSQL实例(2)直接去my.conf中查看.

MYSQL实例my.conf中的配置(放在[mysqld]下的下方加入)

MYSQL实例
[mysqld]
log-slow-queries = /usr/local/mysql/var/slowquery.log
long_query_time = 1 #单位是秒
log-queries-not-using-indexes

MYSQL实例
使用sql语句来修改:不能按照my.conf中的项来修改的.修改通过"show VARIABLES like "%slow%" "
语句列出来的变量,运行如下sql:

MYSQL实例
set global log_slow_queries = ON;
set global slow_query_log = ON;
set global long_query_time=0.1; #设置大于0.1s的sql语句记录下来

MYSQL实例慢查询日志文件的信息格式:

MYSQL实例
# Time: 130905 14:15:59   时间是2013年9月5日 14:15:59(前面部分容易看错哦,乍看以为是时间戳)
# User@Host: root[root] @ [183.239.28.174] 请求mysql服务器的客户端ip
# Query_time: 0.735883 Lock_time: 0.000078 Rows_sent: 262 Rows_examined: 262 这里表示执行用时多少秒,0.735883秒,1秒等于1000毫秒

MYSQL实例SET timestamp=1378361759;? 这目前我还不知道干嘛用的
show tables from `test_db`; 这个就是关键信息,指明了当时执行的是这条语句

MYSQL实例
1、MySQL 慢查询日志分析
pt-query-digest分析慢查询日志

MYSQL实例
pt-query-digest Creport slow.log

MYSQL实例报告最近半个小时的慢查询:

MYSQL实例
pt-query-digest Creport Csince 1800s slow.log

MYSQL实例报告一个时间段的慢查询:

MYSQL实例
pt-query-digest Creport Csince ‘2013-02-10 21:48:59′ Cuntil ‘2013-02-16 02:33:50′ slow.log

MYSQL实例报告只含select语句的慢查询:

MYSQL实例
pt-query-digest Cfilter ‘$event->{fingerprint} =~ m/^select/i' slow.log

MYSQL实例报告针对某个用户的慢查询:

MYSQL实例
pt-query-digest Cfilter ‘($event->{user} || “”) =~ m/^root/i' slow.log

MYSQL实例报告所有的全表扫描或full join的慢查询:

MYSQL实例
pt-query-digest Cfilter ‘(($event->{Full_scan} || “”) eq “yes”) || (($event->{Full_join} || “”) eq “yes”)' slow.log

MYSQL实例
2、将慢查询日志的分析结果可视化
Query-Digest-UI
其实,这是一个非常简单和直接的工具,浏览和统计Mysql慢查询,基于AJAX的Web界面.
配置Query-Digest-UI:

MYSQL实例下载:

MYSQL实例
wget https://nodeload.github.com/kormoc/Query-Digest-UI/zip/master
 unzip Query-Digest-UI-master.zip

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

MYSQL实例(1)创建相关数据库表

MYSQL实例
-- 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,`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;

MYSQL实例(2)创建数据库账号

MYSQL实例
$ 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';"

MYSQL实例(3)配置Query-Digest-UI

MYSQL实例修改数据库连接配置

MYSQL实例
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',);

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

MYSQL实例
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,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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读