TOPサーバ構築・運用> table_cacheとは
MySQLチューニング
はじめてのMySQLチューニング

第4回:ベンチマークツールを使った負荷テスト

著者:アールワークス  田中 靖之   2007/7/23
1   2  3  次のページ
table_cacheとは

   table_cacheとは「MySQLサーバが開いた状態で維持できるテーブル数の最大値」をあらわします。「第3回:max_connectionsとthread_cacheのチューニングを行う」で取り上げたthread_cacheは、1度生成したスレッドを維持して再利用することによってスレッド生成にかかる負荷を低減するものでした。table_cacheも同様に1度開かれたテーブルをメモリ上に維持しておき、再利用することでテーブルを開くことによる負荷を低減します。

   table_cacheは、デフォルト状態では以下の通り「64」に設定されています。

(画像をクリックすると別ウィンドウに拡大図を表示します)


現在開かれているテーブル数の確認方法

   まず現在開かれているテーブル数を確認してみましょう。


(画像をクリックすると別ウィンドウに拡大図を表示します)

   MySQLサーバを起動してすぐの状態では、6つのテーブルが開かれていることがわかります。では、実際のところどのようなテーブルが開かれているのでしょうか。こちらはMySQLコマンドラインから確認できます。


(画像をクリックすると別ウィンドウに拡大図を表示します)

   このようにmysqlデータベースの各テーブルが6つ開かれています。このmysqlというデータベースはtestデータベース同様、MySQLサーバを作成すると必ず作られるデータベースで、MySQLユーザやパスワードなどMySQLサーバが稼動する上で必要な基本的情報が保存されています。


その他のテーブル関連のデータ

   show statusコマンドで得られるテーブル関連の情報には、Open_tablesのほかに、「Opened_tables」というものがあります。こちらはthread_cacheに対するThreads_createdと同じで、「MySQL起動後に開かれたテーブルの総数」をあらわします。

   これまでと同じように、現在の値をmysqladminコマンドで確認してみましょう。


(画像をクリックすると別ウィンドウに拡大図を表示します)

   すると先ほどOpen_tablesは6だったのに、Opened_tablesが12になっています。いったいどういうことでしょうか。

   これはリファレンスマニュアルでも説明されていますが、MySQLでは同じテーブルに対して同時にアクセスするスレッドがあった場合、それぞれが同じテーブルを重複して開くためです。こうすることによってマルチスレッド環境でのパフォーマンスを向上させているのです。

   このことから、MySQLサーバで開かれるテーブル数の最大値は最低でもmax_connectionsと同数であることがわかります。「最低でも」と述べたのはjoinを含むクエリによって複数のテーブルが開かれるケースがあるためで、その場合にはmax_connections×n(nはjoinによって結合されるテーブル数)が最大値となります。

1   2  3  次のページ


株式会社アールワークス 田中 靖之
著者プロフィール
株式会社アールワークス  田中 靖之
ネットワークインテグレーション部
主にWebサービス系のシステム運用監視を担当するネットワークインテグレーション部に所属。システム改善やチューニングを顧客と共に考える姿勢を大事にしている。


INDEX
第4回:ベンチマークツールを使った負荷テスト
table_cacheとは
  デフォルト値での性能測定
  適切なtable_cacheの設定値を知るために