0

innodb データベース (MySQL) に 81 個のテーブルがあります。それらのデータは、ディスク上で 2GB になります。私のクエリは、一度に 3 つ以上のテーブルを結合することはめったにありません。私の innodb_buffer_pool サイズは約 2.1 GB です。

mysqltuner.pl を実行すると、次のようになります !!

[!!] テーブルキャッシュヒット率: 7% (274 open / 3K open)

mysqlreport から、実際に 274 が開いており、3K が開いていて、開いている上限が 400 であることがわかります。

ただし、こうすると

show status like '%open%'

この結果を得る

...
Open_table_definitions      161
Open_tables                 274
Opened_files             150232
Opened_table_definitions      0
Opened_tables                 0

2 つの質問:

1) '%open%' のようなステータス表示から、上記の結果で「開いているテーブル」がゼロではなく 3K と表示されるべきではありませんか?

2)これを改善するために何をする必要があるかについてのアドバイス!! つまり、テーブル キャッシュのヒット率が低いのでしょうか。

ありがとう

PS。お役に立てば第二弾!! 私は mysqltuner.pl にこれがあります:

[!!] ディスク上に作成された一時テーブル: 29% (ディスク上に 35K / 合計 119K)

4

2 に答える 2

0
  1. show status like '%open%'MySQL DB 全体ではなく、現在のセッションのステータスを表示します ( SHOW STATUS Syntax )。グローバル ステータスを取得するには、show global status like '%open%'代わりに使用します。

  2. mysqltuner.pl で発生した問題の 1 つは、実行されるたびにデータベース内のすべてのテーブルが開かれるため、opened_tables 統計が増加することです。そうでない場合、MySQL のマニュアルでは * に設定table_open_cacheすることをお勧めします。

于 2015-09-09T09:56:52.310 に答える
0

1) '%open%' のようなステータス表示から、上記の結果で「開いているテーブル」がゼロではなく 3K と表示されるべきではありませんか?

はい、結果は主に SHOW STATUS と SHOW VARIABLES およびいくつかの基本的な計算操作から得られました。

2)これを改善するために何をする必要があるかについてのアドバイス!! つまり、テーブル キャッシュのヒット率が低いのでしょうか。

テーブル キャッシュ ヒットの原因: 1. 開いているテーブルが少なすぎる 2. すべてのデータベース内のテーブルの総数 <<< 開いているテーブル キャッシュ サイズ。

于 2015-08-24T09:48:01.140 に答える