|
||||||||||||||
| 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 次のページ |
||||||||||||||
|
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||



