Write by lyc at 2019-11-11
Percona Toolkit使用测试(4)PT-DUPLICATE-KEY-CHECKER
pt-duplicate-key-checker
pt-duplicate-key-checker
检查重复的索引,给出删除意见。
- 检查MySQL表上
SHOW CREATE TABLE
的输出,如果它发现与另一个索引以相同顺序覆盖相同列的索引,或者覆盖另一个索引的最左端前缀,它就输出可疑的索引。
- 默认情况下,索引必须具有相同的类型,因此BTREE索引和全文索引不算重复,即使它们具有相同的列。您可以覆盖它
- 它还查找重复的外键。一个重复的外键与同一个表中的另一个外键覆盖相同的列,并引用相同的父表。
- 输出以一个简短的摘要结束,其中包括对重复索引使用的总大小(以字节为单位)的估计。这是通过将索引长度乘以它们各自表中的行数来计算的。
- pt-duplicate-key-checker在判断的时候尽可能的让组合索引保持下来。
参数说明
--all-structs
比较不同结构(BTREE、HASH等)的索引。默认情况下,这是禁用的,因为与全文索引覆盖相同列的BTREE索引实际上并不算是重复的
查看指定库的重复索引
1 2 3 4 5 6 7 8
| $ pt-duplicate-key-checker \ --user=root \ --password=123456 \ --host=192.168.xxx.xxx \ --port=3306 \ --all-structs \ --charset=utf8 \ --databases=DATABASE_NAME,TABLE_NAME > /data/3306.txt
|
查看分析结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| $ head -50 3306.txt
ALTER TABLE `DATABASE_NAME`.`TABLE_NAME` DROP INDEX `SelectUserID`;
....
|