Percona Toolkit使用测试(7)PT-FINGERPRINT

pt-fingerprint——将一类SQL语句转换成绑定变量的模式

单个语句转换:
pt-fingerprint --query “select a, b, c from users where id = 500”
文件语句转换:
pt-fingerprint /path/to/file.txt

pt-fingerprint是查询的抽象形式,这使得将类似的查询组合在一起成为可能。
抽象查询删除了文字值,规范化了空格,等等。例如,考虑以下两个查询:
在这里插入图片描述
两个查询都将被抽象为:
在这里插入图片描述
一旦知道查询的指纹,我们就可以讨论一个单独的查询来替代讨论所有类似查询一样。

以下是指纹识别过程中的一系列转换 :

  • 1.将所有来自mysqldump的SELECT查询组合在一起,即使它们针对的是不同的表。对于pt-table checksum的所有校验和查询也是如此。
  • 2.将多值INSERT 语句缩短为单个 VALUES() 列表。
  • 3.去除注释
  • 4.抽象USE语句中的数据库,因此所有的USE语句都被分组在一起。
  • 5.替换所有的文字,例如带引号的字符串。为了提高效率,替换文字数字的代码在某种程度上是非选择性的,并且可能会替换一些实际上不是数字的东西。
    十六进制文字也被替换。NULL被视为文字。
    嵌入到标识符中的数字也被替换,因此类似名称的表将被指纹识别为相同的值(例如users_2009和users_2010将指纹识别为相同的值)。
  • 6.将所有空格折叠成一个空格。
  • 7.将整个查询小写。
  • 8.用一个占位符替换IN()和VALUES()列表中的所有文字,不管基数如何。
  • 9.将多个相同的UNION查询合并为一个查询

参数

- -config
读取这个逗号分隔的配置文件列表;如果指定,这必须是命令行上的第一个选项。
- -help
帮助并退出
- -match-embedded-numbers
匹配嵌入在单词中的数字并替换为单个值。
这个选项使该工具在匹配数字时更加小心,防止将带有数字的单词(如catch22)匹配并替换为单词+?占位符。
否则,默认的数字匹配模式将把catch22替换为catch?。
如果数据库或表名包含数字,这将非常有用。
示例:
在这里插入图片描述
- -match-md5-checksums
匹配MD5校验和并替换为单个值。这个选项使工具在匹配数字时更加小心,以便将fbc5e685a5d3d45aa1d0347fdb7c4d35这样的MD5校验和匹配并替换为单个校验和?占位符。否则,默认的数字匹配模式将替换fbc5e685a5d3d45aa1d0347fdb7c4d35作为fbc?。
- -query
转换单个语句
- -version
显示版本并退出

使用:

慢查询内容 slow.log:
在这里插入图片描述
pt-fingerprint --match-embedded-numbers slow.log
在这里插入图片描述
pt-fingerprint --match-embedded-numbers slow.log >slow1.log
由于每条语句没有换行,所以先sed替换;为换行,再排序去重,也可以入库统计
pt-fingerprint --match-embedded-numbers slow.txt |sed ‘s/;/\n/g’ |sort|uniq
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值