Percona-Tookit工具包之pt-query-digest
Usage: pt-query-digest [OPTIONS] [FILES] [DSN]
Parameters introduce
--limit -- Limit the output conents by count(defualt ) or percentage(default %).
--type -- Indicate a type(default "slowlog",else value is "genlog","binlog","tcpdump",etc.) you want to anaylze.
--processlist -- Analyze from "show processlist" result from specific host(need to input DSN).
--create-history-table -- Create a table to record infomation if use "--history"(default "true").
--create-review-table -- Create a table to record infomation if use "--review"(default "true").
--history -- Save query metrics(such as query time) into a given table which can be checked incremental difference later.
--review -- Save query classes into a given table for later review.It don't report same kind of class.
--output -- Specify the format of query result(default "report").
--since -- Give a specific time with time format of beginning.
--until -- Give a specific time with time format of end.
--group-by -- According to the atrribute of envents to group by(default "figerprint",else value is "tables"&"distill").
--order-by -- According to the atrribute of envents to sort by(default "Query_time:sum").
(root@localhost mysql3306.sock)[(none)]::>show variables like '%slow%';
+---------------------------+----------+
| Variable_name | Value |
+---------------------------+----------+
| log_slow_admin_statements | OFF |
| log_slow_slave_statements | ON |
| slow_launch_time | |
| slow_query_log | ON |
| slow_query_log_file | slow.log |
+---------------------------+----------+
rows in set (0.00 sec) (root@localhost mysql3306.sock)[(none)]::>show variables like '%long_query_time%';
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 1.000000 |
+-----------------+----------+
row in set (0.00 sec) (root@localhost mysql3306.sock)[(none)]::>show variables like '%log_output%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output | FILE |
+---------------+-------+
row in set (0.00 sec)
Execute a slow query.
(root@localhost mysql3306.sock)[(none)]::>select sleep();
+-----------+
| sleep() |
+-----------+
| |
+-----------+
row in set ( min 0.01 sec)
Check slow log for information of above slow query.
[root@zlm2 :: /data/mysql/mysql3306/data]
#cat slow.log # Time: --23T07::.891778Z
# User@Host: root[root] @ localhost [] Id:
# Query_time: 60.001239 Lock_time: 0.000000 Rows_sent: Rows_examined:
SET timestamp=;
select sleep();
Use pt-query-digest analyze slow log file for more details.
[root@zlm2 :: ~]
#pt-query-digest /data/mysql/mysql3306/data/slow.log # No events processed. -- Only if the slow query has finished,there will be a result of report. [root@zlm2 :: ~]
#pt-query-digest /data/mysql/mysql3306/data/slow.log # 180ms user time, system time, 25.59M rss, 221.68M vsz
# Current date: Sat Jun ::
# Hostname: zlm2
# Files: /data/mysql/mysql3306/data/slow.log
# Overall: total, unique, QPS, 0x concurrency ______________________
# Time range: all events occurred at --23T07::
# Attribute total min max avg % stddev median
# ============ ======= ======= ======= ======= ======= ======= =======
# Exec time 60s 60s 60s 60s 60s 60s
# Lock time
# Rows sent
# Rows examine
# Query size # Profile
# Rank Query ID Response time Calls R/Call V/M Item
# ==== ================== ============== ===== ======= ===== ======
# 0xF9A57DD5A41825CA 60.0012 100.0% 60.0012 0.00 SELECT # Query : QPS, 0x concurrency, ID 0xF9A57DD5A41825CA at byte ________
# This item is included in the report because it matches --limit.
# Scores: V/M = 0.00
# Time range: all events occurred at --23T07::
# Attribute pct total min max avg % stddev median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count
# Exec time 60s 60s 60s 60s 60s 60s
# Lock time
# Rows sent
# Rows examine
# Query size
# String:
# Hosts localhost
# Users root
# Query_time distribution
# 1us
# 10us
# 100us
# 1ms
# 10ms
# 100ms
# 1s
# 10s+ ################################################################
# EXPLAIN /*!50100 PARTITIONS*/
select sleep()\G ###All the meaning of above is self-explanatory,you can check official document for details.###
pt-query-digest --type=genlog /path/zlm2.log > report1.log
2.Analyze binlog.
mysqlbinlog -vv --base64-output=decode-rows /path/mysql-bin. > mysql-bin000010.sql
pt-query-digest --type=binlog /path/mysql-bin000001.sql > report2.log
3.Analyze rawlog(It's a general txt file which contains SQL statement).
echo "select sleep(10);">rawlog.log pt-query-digest --type=rawlog rawlog.log > report3.log
4.Analyze processlist(DSN is indispensable).
pt-query-digest --processlist h=192.168.1.101,P=,u=repl,p=repl4slave > report4.log -- If connection failed,it will try every second.
5.Analyze tcpdump.
tcpdump -s -x -nn -q -tttt -i any -c port > tcpdump.log
pt-query-digest --type=tcpdump tcpdump.log > report5.log
6.Analyze slow log since last 24 hours.
pt-query-digest --since=24h slow.log > report6.log
7.Analyze slow log since time until time.
pt-query-digest --since '2018-06-23 08:30:00' --until '2018-06-23 10:30:00' slow.log > report7.log
8.Analyze slow log into view table("query_review" table will be created if not specify "-t") of remote host.
pt-query-digest --review h=192.168.1.102,P=,u=repl,p=repl4slave,D=zlm,t=query_review slow.log > report8.log
9.Analyze slow log into history table("query_history" table will be created like above) of remote host.
pt-query-digest --review h=192.168.1.102,P=,u=repl,p=repl4slave,D=zlm,t=query_history slow.log > report9.log
- There're still some advanced useages I've not demonstrated such as "--group-by","--order-by" and "--filter",etc.
- pt-query-digest is extraordinarily useful when doing performance diagnosis by different ways.
- It's recommended to analyze logs on another node(maybe slave) instead of master to reduce consumption of CPU,Memory,IO,etc.
- pt-query-digest can help you to find out the specific slow quries.Afterwards you can use MySQL profiling("set profiling=1;" then "show profiles;") to survey the perticular resources which are tremendously consumed.
Percona-Tookit工具包之pt-query-digest的更多相关文章
- [hdu 6191] Query on A Tree
Query on A Tree Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 132768/132768 K (Java/Othe ...
- Mysql: pt-table-checksum 和 pt-table-sync 检查主从一致性,实验过程
一.安装 percona 包 1.安装仓库的包 https://www.percona.com/doc/percona-repo-config/yum-repo.html sudo yum insta ...
- MySQL ProxySQL读写分离使用初探
目的 在美团点评DBProxy读写分离使用说明文章中已经说明了使用目的,本文介绍ProxySQL的使用方法以及和DBProxy的性能差异.具体的介绍可以看官网的相关说明,并且这个中间件也是percon ...
- ProxySQL 配置详解及读写分离(+GTID)等功能说明 (完整篇)
ProxySQL是灵活强大的MySQL代理层, 是一个能实实在在用在生产环境的MySQL中间件,可以实现读写分离,支持 Query 路由功能,支持动态指定某个 SQL 进行 cache,支持动态加载配 ...
- Linux后台开发工具箱
https://files-cdn.cnblogs.com/files/aquester/Linux后台开发工具箱.pdf 目录 目录 1 1. 前言 3 2. 脚本类工具 3 2.1. sed命令- ...
- MySQL 使用pt-table-checksum 检查主从数据一致性 (实例转)
1.基本环境: Mysql版本:5.6.12-log Percona-toolkit:2.2.18 Linux:centos6.5 2.安装 源码安装: # 一些依赖包 yum install per ...
- Linux后台开发工具箱-葵花宝典
Linux后台开发工具箱-葵花宝典 一见 2016/11/4 目录 目录 1 1. 前言 4 2. 脚本类工具 4 2.1. 双引号和单引号 4 2.2. 取脚本完整文件路径 5 2.3. 环境变量和 ...
- 推荐几款MySQL相关工具
前言: 随着互联网技术的不断发展, MySQL 相关生态也越来越完善,越来越多的工具涌现出来.一些公司或个人纷纷开源出一些不错的工具,本篇文章主要介绍几款 MySQL 相关实用工具.提醒下,这里并不介 ...
- pt-table-checksum
pt-table-checksum是percona公司提供的一个用于在线比对主从数据一致性的工具. 实现原理 将一张大表分成多个chunk,每次针对一个chunk进行校验,同时将校验的结果通过REPL ...
- [知识库分享系列] 二、.NET(ASP.NET)
最近时间又有了新的想法,当我用新的眼光在整理一些很老的知识库时,发现很多东西都已经过时,或者是很基础很零碎的知识点.如果分享出去大家不看倒好,更担心的是会误人子弟,但为了保证此系列的完整,还是选择分享 ...
随机推荐
- OpenStack各组件详解和通信流程
一.openstack由来 openstack最早由美国国家航空航天局NASA研发的Nova和Rackspace研发的swift组成.后来以apache许可证授权,旨在为公共及私有云平台建设.open ...
- 01常用<meta>总结
meta标签提供关于HTML文档的元数据.元数据不会显示在页面上,但是对于机器是可读的,它可以用于浏览器(显示内容/重新加载页面),搜索引擎(关键字),或者其他web服务. 一.页面设置 <!- ...
- 深入理解JavaScript函数
本篇文章主要介绍了"深入理解JavaScript函数",主要涉及到JavaScript函数方面的内容,对于深入理解JavaScript函数感兴趣的同学可以参考一下. JavaScr ...
- hook_myhook.api.php文件什么用
看源文件的时候发现有个user.api.php文件,里面定义了一个新的钩子,$hook_user_categories,但是,drupal核心里面没有,我推测是自定义 的钩子函数,然后在*.modul ...
- easyui datagrid 本地json数据 实现删除
html代码:<a href='javascript:void(0);' onclick='Delete(\""+ index +"\")' class= ...
- Android Proguard.flags LOCAL_PROGUARD_FLAGS
在Android项目中用到JNI,当用了proguard后,发现native方法找不到很多变量,原来是被produard优化掉了.所以,在JNI应用中该慎用progurad啊. 解决办法: 1.在An ...
- mybatis3 step by step 快速上手
作者:Panda Fang 出处:http://www.cnblogs.com/lonkiss/p/6895617.html 原创文章,转载请注明作者和出处,未经允许不可用于商业营利活动 官方网站 h ...
- asyncio标准库7 Producer/consumer
使用asyncio.Queue import asyncio import random async def produce(queue, n): for x in range(1, n + 1): ...
- Oracle彻底杀掉进程
kill session 是DBA经常碰到的事情之一.如果kill 掉了不该kill 的session,则具有破坏性,因此尽可能的避免这样的错误发生.同时也应当注意,如果kill 的session属于 ...
- x64 分页机制——虚拟地址到物理地址寻址
原博客:http://www.cnblogs.com/lanrenxinxin/p/4735027.html 详细的理论讲解都在上面 下面说的是通过windbg手动进行寻址,深入理解 x64: 实践: ...