MySQL Tunerを使って、MySQLを最適化する

参考になればシェアしてもらえるとうれしいです

  • このエントリーをはてなブックマークに追加
  • 8
mysql-logo

先日、「【MySQL】Disk IOが大きいSQLの内容を確認する」や「MySQLのスロークエリログをmysqldumpslowで分析する」という記事を書きましたが、そもそも設定とかサーバのスペックあってるの?

という疑問を抱いた際に使えるツール「MySQL Tuner」をご紹介します。

スポンサーリンク

MySQL Tunerとは

MySQL Tunerとは、簡単にいうと「MySQLのチューニング診断をしてくれるアプリケーション」です。

よくわかんないけど、ググってmy.cnf書いたけど自分の環境にあってるのかよくわかんない。

という方には是非一度お試しいただきたいアプリケーションですね。

基本的なパフォーマンスチューニング診断をわかりやすく表示してくれます。

MySQL Tuner
https://github.com/rackerhacker/MySQLTuner-perl
ライセンスはGNU GPLなので無料で利用可能です。

実際にMySQL Tunerを使ってみる

1.ダウンロードとインストール

調査したいDBのあるサーバ上でダウンロードします。

適当なディレクトリにダウンロードして、展開。(今回は/usr/local/src/)

その後、解凍して実行ファイルに実行権限つけてるだけ。

2.実行

そのまま実行ファイルをキックするだけ。

MySQL Tunerの実行にはDBのID/PASSが必要です。(解析するので権限が必要になります。

その場合は、実行ファイルに引数として情報をつけてやればOK。

結果を見てチューニングしてみる

実行結果を確認してチューニングを行っていきましょう。

基本的には「[!!]」と表記のある部分を解決していけばいい感じですね。

上記の実行結果を見て改善していきましょう。

断片化

断片化してるテーブルが780もあるよ。。

これ開発環境だから放置してるけど、実際の環境ならパフォーマンス劣化の一因なのでしっかり対応していきましょう。

対応方法

OPTIMIZE TABLE構文を使って、データファイルを最適化しましょう。

MySQL 5.1 リファレンスマニュアル (オンラインヘルプ) :: 8.5.2.5 OPTIMIZE TABLE 構文

バッファサイズ・キャッシュヒット率

まず、key_buffer_sizeが小さいのでインデックスの効果を活かせてない感じ。
同様にバッファサイズが小さいので、クエリのキャッシュヒット率が低い。

次にテーブルキャッシュのヒット率も低い。
最後のもInnoDBのbuffer poolがデータに比べて小さくて乗らないよ。ってところですね。

対応方法

my.cnfでkey_buffer_sizeを上げましょう。(メモリと相談しながら)

まとめ

設定する値とかよくわかんない。という方でも

以降の値を確認しながら調節すればなんとなく良くなりそうですね。

が、サーバの物理スペックなどもあると思うので、そのあたりは慎重に変更をしましょう。

スポンサーリンク

参考になればシェアしてもらえるとうれしいです

  • このエントリーをはてなブックマークに追加

フォローする

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です