|
|
はじめてのMySQLチューニング |
第4回:ベンチマークツールを使った負荷テスト
著者:アールワークス 田中 靖之 2007/7/23
|
|
|
前のページ 1 2 3 次のページ
|
|
デフォルト値での性能測定
|
まずtable_cacheをチューニングしない状態での性能測定結果をみてみましょう。なお、最初に確認したように、table_cacheは64がデフォルト値です。
図1のグラフは再測定したわけではなく、前回のthread_cacheチューニング後の測定結果からMax_used_connectionsとThreads_createdのデータを除き、Open_tablesとOpened_tablesに差し替えてグラフにしたものです。
図1:table_cacheデフォルト状態での測定 (画像をクリックすると別ウィンドウに拡大図を表示します)
Open_tablesは小さい値なのでわかりづらいのですが、最初に少し増加して、それ以降は64で一定となっており、デフォルトの最大値で維持されていることがわかります。
一方Opened_tablesを見ると、多いときは数1,000ものテーブルが開かれており、その処理のためのサーバに負荷がかかっていることが予想されます。
|
table_cacheのチューニング
|
ではthread_cacheの値を変更してみましょう。変更方法はこれまでと同様です。今回はjoinを含むようなクエリはありませんので、max_connectionsと同じ値に設定します。
[mysqld]
max_connections=450
thread_cache=450
table_cache=450
その後、MySQLサービスを再起動します。
# /etc/init.d/mysql restart
一方、MySQLサービスが稼動中で、これまでのパラメータと同様に変更可能です。その場合は以下のように指定します。
$ mysql -u root -p
mysql> set global table_cache=450;
では変更結果を確認しましょう。
|
table_cacheチューニング後の測定結果
|
table_cacheチューニング後、再度測定を行った結果は以下の通りでした。
図2:table_cacheチューニング後の測定結果 (画像をクリックすると別ウィンドウに拡大図を表示します)
Open_tablesは同時接続数の増加に伴い最終的には211まで増えましたが、max_connectionsまでは必要とされなかったようです。一方、Opened_tablesは改善され、開かれるテーブル数は激減しました。
ただしQueries_per_secにはそれほど明確な改善はみられませんでした。同時接続数が300〜400の間(Open_tablesが211になって以降)はかなり安定した値になっており、高負荷時にはtable_cacheの効果があったといえるのではないでしょうか。
|
前のページ 1 2 3 次のページ
|
|
|
|
著者プロフィール
株式会社アールワークス 田中 靖之
ネットワークインテグレーション部 主にWebサービス系のシステム運用監視を担当するネットワークインテグレーション部に所属。システム改善やチューニングを顧客と共に考える姿勢を大事にしている。
|
|
|
|