MySQL 性能优化工具:pt-duplicate-key-checker(检查优化冗余索引)

由于个人能力有限,文中可能存在错误,欢迎批评指正。

1.说明

pt-duplicate-key-checker 用于检查冗余索引及优化,pt 工具下载

在 MySQL 5.6 或更高版本,可以直接在 sys 库中查询 schema_redundant_indexes 表,也能获取到冗余索引信息,如下所示:

mysql> select * from sys.schema_redundant_indexes\G
*************************** 1. row ***************************
              	 table_schema: dbtest01
                   table_name: t3
      	 redundant_index_name: idx_xx
   	  redundant_index_columns: xxx
   redundant_index_non_unique: 1
       	  dominant_index_name: idx_uniq
       dominant_index_columns: xxx,yyy,zzz
 	dominant_index_non_unique: 0
               subpart_exists: 0
               sql_drop_index: ALTER TABLE `dbtest01`.`t3` DROP INDEX `idx_xx`
*************************** 2. row ***************************
              	 table_schema: dbtest01
                   table_name: ttt
      	 redundant_index_name: name
   	  redundant_index_columns: name
   redundant_index_non_unique: 1
       	  dominant_index_name: xxx
       dominant_index_columns: name,age
 	dominant_index_non_unique: 1
               subpart_exists: 0
               sql_drop_index: ALTER TABLE `dbtest01`.`ttt` DROP INDEX `name`
2 rows in set (0.01 sec)

2. pt 工具使用

[mysql@dbtestsitdb01 bin]$ ./pt-duplicate-key-checker -uroot -p‘123456-h127.1 --socket=/mysql/data/mysql.sock -d dbtest01
# ########################################################################
# dbtest01.t3                                                             
# ########################################################################

# idx_xx is a left-prefix of idx_uniq
# Key definitions:
#   KEY `idx_xx` (`xxx`) USING BTREE,
#   UNIQUE KEY `idx_uniq` (`xxx`,`yyy`,`zzz`),
# Column types:
#	  `xxx` varchar(20) not null
#	  `yyy` varchar(20) not null
#	  `zzz` varchar(20) not null
# To remove this duplicate index, execute:
ALTER TABLE `dbtest01`.`t3` DROP INDEX `idx_xx`;

# ########################################################################
# dbtest01.ttt                                                            
# ########################################################################

# name is a left-prefix of xxx
# Key definitions:
#   KEY `name` (`name`),
#   KEY `xxx` (`name`,`age`)
# Column types:
#	  `name` varchar(20) default null
#	  `age` varchar(10) default null
# To remove this duplicate index, execute:
ALTER TABLE `dbtest01`.`ttt` DROP INDEX `name`;

# ########################################################################
# Summary of indexes                                                      
# ########################################################################

# Size Duplicate Indexes   741
# Total Duplicate Indexes  2
# Total Indexes            79

由上述检查信息中,我们可以看到,表 t3 、ttt 中存在冗余索引,并且给出对应可以删除重复索引的 SQL 命令。

结尾的统计信息:

  • Size Duplicate Indexes,检查的索引占用空间大小
  • Total Duplicate Indexes,检查的冗余索引数量
  • Total Indexes,检查的总的索引数量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值