コマンド
pt-index-usage [ オプション ] [ ファイル ]
【必須項目】
- ・ [ ファイル ] : スロークエリログを絶対パスで指定します
- ・ [ オプション ] : -p パスワード
【主なオプション】
- ・ –drop : ユニークインデックスなども含め、使用されていない全てのインデックスを調査します(デフォルトでは調査対象となるのはセカンダリインデックスのみです)
目的
スロークエリログからクエリを読み込み、使用されていないインデックスを調査して、削除する為のクエリを出力します
設定ファイル
上記の必須項目を、設定ファイルにまとめておきます
# touch /etc/percona-toolkit/pt-index-usage.conf
# vi /etc/percona-toolkit/pt-index-usage.conf
・設定ファイルの作成
# touch /etc/percona-toolkit/pt-index-usage.conf
・設定ファイルの編集
# vi /etc/percona-toolkit/pt-index-usage.conf
# config for pt-index-usage
user=root
password=パスワード
D=employees
・MySQL のユーザ名
user=root
・MySQL のパスワードを記載
password=パスワード
・データベース名
D=employees
シナリオ
以下のSQL文を実行し、titleカラムに対してインデックスを作成します
mysql> ALTER TABLE employees ADD INDEX idx_birth_date(birth_date);
mysql> ALTER TABLE employees ADD INDEX idx_first_name(first_name);
以下のSELECT文を実行し、slowクエリログに記録させます
mysql> SELECT * FROM employees;
slowクエリログに対して、pt-index-usageコマンドを実行します
#pt-index-usage /tmp/slow_query.log
結果
使用されていないインデックスを削除するためのALTER文が出力されます
[root@localhost mysql]# pt-index-usage /tmp/slow_query.log
ALTER TABLE `employees`.`employees` DROP KEY `idx_birth_date`, DROP KEY `idx_first_name`, DROP KEY `idx_gender`; -- type:non-unique
[root@localhost mysql]#
良い点
不要なインデックスをすぐに判別することが出来ます