2013年12月22日 星期日 20:29
pt-duplicate-key-checker是Percona Toolkit中的一员,它通过扫描数据库中数据表的表结构定义,找出重复的索引,然后生成DROP INDEX的SQL语句。
使用实例如下:
pt-duplicate-key-checker -S /data/mysql/3306/mysql.sock
截取输出的一部分:
# id is a duplicate of PRIMARY # Key definitions: # KEY `id` (`id`) USING BTREE # PRIMARY KEY (`id`), # Column types: # `id` int(11) not null auto_increment # To remove this duplicate index, execute: ALTER TABLE `okaybuy`.`p_supplier_adjust_apply` DROP INDEX `id`;
一般来说,所谓“重复的索引”,有以下几种情况:
1,索引列完全相同,只是索引的名字不同。例如:
key name_1(name),
key name_2(name)
2,多列索引前缀包含。例如:
key index_1(name,email,id),
key index_2(name)
3,一般索引与主键重复。例如:
primary key(id),
key index_1(id)
4,一般索引与Unique索引重复。例如:
unique key(id),
primary key(id),
key index_1(id)
重复的索引对于查询速度没有改进,但对于写入速度会有严重影响,并且还占用磁盘空间,应当尽量避免。
参考文档:
http://www.mysqlperformanceblog.com/2012/06/20/find-and-remove-duplicate-indexes/
http://www.percona.com/doc/percona-toolkit/2.2/pt-duplicate-key-checker.html
Zeuux © 2024
京ICP备05028076号