ようこそ!浜村拓夫の世界へ

    ブログ内検索

    最近の記事

    ブックマーク数の多い記事

    Blog Translation

    Powered By FC2ブログ

    Powered By FC2ブログ
    ブログやるならFC2ブログ


    FC2ブログ LOGIN

    with Ajax Amazon

    MySQLが遅い

    このエントリーを含むはてなブックマーク はてなブックマーク - MySQLが遅い あとで読む
    phpMyAdminでMySQLを操作していると、なんか動作が異常に遅いと思うときがある。
    データ数が数十万件あるテーブルだし、管理者の操作だから仕方がないか?と思ったが、もしこれがユーザー向けの処理だったら10秒以上待つとか有り得ない。

    サーバのスペックアップが必要なのか?
    MySQLのチューンナップが必要なのか?
    どうすればいいのか?自問自答してみる。

    Linux-DB システム構築/運用入門 (DB Magazine SELECTION)Linux-DB システム構築/運用入門 (DB Magazine SELECTION)
    (2009/09/17)
    松信 嘉範

    商品詳細を見る

    ●ボトルネックの原因調査
    まず、ボトルネックを調べてみる。
    …と言っても、Linuxサーバの操作に習熟していないので、
    ・「uptime」コマンドでロードアベレージを見たり、
    ・「top」コマンドでCPUの使用率を見たり
    するくらいだ。

    分かったことは、phpMyAdminで重たい処理をしている間、topコマンドでサーバの動作状況をリアルタイムに眺めると、mysqldのCPU使用率がほぼ100%になっているということ。そして、ロードアベレージも1を超えているということ。

    ●ベンチマークツール
    Googleで検索してみたら、Linux用のベンチマークツールがいろいろあるみたい。
    大量にサーバを導入することがあるなら、選定作業としてベンチマークを測定した方がいいんだろうなー。
    今回は、サーバのスペックがショボイことは分かりきっているので、ベンチマーク測定は今更感がある…。

    (参考)
    Open database life - 正しいベンチマークをするための10のポイント
    (↑MySQLの本をいろいろ書いている松信嘉範さんのブログ。参考になるなー。)

    DBサーバのベンチマーク/負荷テストを行ったり結果を読んだりする上で、心がけているポイントを10個ほど紹介したいと思います。

    ■ハードウェアに関する4つのポイント
    1. ハードウェアのスペックと設定を注視する
    2. 大まかなアクセス性能を知っておく
    3. 並列性を考慮する
    4. どこのスループットやレスポンスタイムかを確認する(ローカルアクセスかリモートアクセスかを確認する)

    ■ベンチマーク用アプリケーションに関する4つのポイント
    5. 処理の内容に気を配る
    6. データサイズに注意する
    7. データのアクセス範囲に注意する
    8. データの内容に注意する

    ■データベース設定に関する2つのポイント
    9. OS/ミドルウェアのバージョンと設定に注意する
    10. 統計コマンドの使い方と見方を知る



    MySQLのベンチマークを測定するWebアプリ(GUI)ってどこかにないのかな?

    ●MySQLのチューンナップ
    サーバ交換は後の話として、まずはMySQLのチューンナップで出来る範囲のことをやってみる。
    で、どこをいじればいいのか?

    (参考)
    シバタ3の外部記憶装置 - すごく遅いシステムをチューニングしたい(PHP&MySQL)

    ■topコマンドで見てみる
    ■sarコマンドで見てみる
    ■vmstatコマンドで見てみる
    わたしのケースでは「query_cache_size」の設定で劇的に状況が改善しました。



    テーブルにカラムを追加したり削除する操作だから、たまにしかやらないんだよね。
    頻度が少ないクエリーなので、結果をキャッシュしても効果ないだろうな。
    他のパラメータを調べてみよう。

    cles::blogのチューニング

    まずはなぜ遅いのかという原因を絞り込みます。
    これはDBのチューニングに限らず全てのチューニングという作業に共通したものですよね。
    これをやらずにチューニングやリソースの増強を行なうのは愚の骨頂です。

    さて、遅いという現象は基本的に何らかのリソース不足なわけなので、どんなリソースがDBにとって不足しているのかということを調べることになります。

    原因は大きく分けて以下の5つでしょうか。
     ・CPU
     ・メモリ
     ・ディスク
     ・ネットワーク
     (・リソースの競合[デッドロック])

    query_cache_limit=1M
    query_cache_min_res_unit=4k
    query_cache_size=32M
    query_cache_type=1



    query_cache_sizeはデフォルトで16MBになってた。
    サーバのスペックアップを試してみたい。
    関連記事

    コメント

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバックURL:
    http://hamamuratakuo.blog61.fc2.com/tb.php/416-5488bfe5

    FC2Ad