製品

Percona

pt-index-usage

コマンド

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]#

良い点

不要なインデックスをすぐに判別することが出来ます