zoukankan      html  css  js  c++  java
  • 一,ptduplicatekeychecker

    从CSDN上移过来的,已经不打算更新csdn了。

    http://blog.csdn.net/mr_mablevi?viewmode=contents

    前提:

    下载地址:http://www.percona.com/redir/downloads/percona-toolkit/percona-toolkit-1.0.1.tar.gz

    安装方法:perl Makefile.PL;make;make install

     

    一:pt-duplicate-key-checker 使用

    参考地址:http://www.percona.com/doc/percona-toolkit/pt-duplicate-key-checker.html

    使用方法:

    pt-duplicate-key-checker [OPTION...] [DSN]

    使用说明:检查重复或多余的索引和外键,并打印出信息。
    参数说明:加粗的为常用的。
    --all-structs
    结构(B树,哈希等)的索引,默认情况下是禁止的。因为BTREE索引可能会覆盖作为FULLTEXT索引的列,其实他们不是真正
    的重复,因为是不同的索引结构。

    --ask-pass
    提示输入密码。
    --charset

    缩写-A,字符集设置:utf8,gbk,latin1 …

    --[no]clustered

        主键和第二索引一起是重复的,默认开启。检测时的非主键索引的多列索引的后缀是一个主键最左边的前缀,则作为一个重复键。如:

    PRIMARY KEY  (`a`)

    KEY `b` (`b`,`a`)

    SELECT ... WHERE b=1 ORDER BY a;

    如果按照这个工具去掉b索引,则会出现filesort,他给的意见是 留下b(b)单列索引,把order by a去掉,因为他们的结果是一样的,a是主键。

    --config
     读取该配置文件的列表。

    --databases
    只检查该列表中的数据库。

    --defaults-file
    缩写-F,读取Mysql的配置文件,需要绝对路径。

    --engines
    缩写-e,只检查该列表中指定的表的存储引擎。

    --tables

    缩写-t,只检查列表中指定的表。

    --help
    显示帮助

    --host

    缩写-h,连接到主机地址。

    --ignore-databases

     跳过检查的某些数据库。

    --ignore-engines
    跳过检查的某些存储引擎。

    --ignore-tables
     跳过检查某些表。

    --ignore-order
    加了这个参数会报: KEY(a,b)和 KEY(b,a) 是重复索引,默认关闭。

    --key-types
    检查索引的类型:f=foreignkeys, k=keys or fk=both,默认是fk。

    --password
    缩写-p,连接mysql时候的密码。

    --user

    缩写-u,连接mysql时候的用户

    --pid
    连接的PID

    --port
    缩写-P,连接时候的端口。

    --socket
    缩写-S,连接时候的套接字。

    --[no]sql
    打印出sql,如果有重复会答应出删除重复索引的sql。默认开启。

    --[no]summary
    打印出索引的统计信息。默认开启。

    --verbose
    缩写-v,打印出所有的索引信息,包括重复索引。

    --version
    打印版本信息。

    列子说明:
    create table a(id int primary key,name varchar(10),ageint);
    1,create index idx_a on a(name);
    2,create index idx_b on a(age);
    3,create index idx_ab on a(name,age);--重复 和1
    4,create index idx_p on a(age,id);   --重复和2
    按理说只有2个重复的索引但是图出现了3个。


    打印出了索引的统计信息,还有删除重复索引的sql。
    为什么会把索引4都删除掉呢,原来是因为默认开启了--[no]clustered  参数。
    去掉参数的话:显示2个。

     

    删除掉1,2,4 索引,在建立
    5,create index idx_ba on a(age,name);

    执行:带 --ignore-order参数

     

    其他的各种参数上面介绍的很清楚了,比如跳过库,存储引擎,表;或则只在某个库,存储引擎,表里面进行检查。可以自行测试。

    ~~~~~~~~~~~~~~~ 万物之中,希望至美 ~~~~~~~~~~~~~~~
  • 相关阅读:
    spring集成环境下的axis webservice的发布,调试
    Axis2 webservice 之使用java调用webservice
    Axis2 webservice入门--写个简单的webservice
    Axis2 webservice入门--开发环境搭建,概念理解
    使用js给页面显示的图片添加水印效果
    java使用dom4j解析xml文件
    一个Java递归程序
    Java-Scanner键盘输入
    JVM—调优参数学习
    JVM—类加载过程
  • 原文地址:https://www.cnblogs.com/zhoujinyi/p/2707376.html
Copyright © 2011-2022 走看看