30

mysql インデックスが利用可能なメモリに完全に収まるかどうかを判断する方法はありますか? もしそうなら、どうすればいいですか:

  • mysql インデックスのサイズを決定する
  • アプリケーションで使用可能なメモリを決定する
  • インデックスが完全にメモリに収まるかどうかを判断する
4

2 に答える 2

28

ストレージエンジンに依存

MyISAM(.MYIファイルからインデックスページをキャッシュする)

SELECT FLOOR(SUM(index_length)/POWER(1024,2)) IndexSizesMB
FROM information_schema.tables WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','performance_schema','mysql');

からそれを引きkey_buffer_sizeます。答えが0より大きい場合、はい

InnoDB(データとインデックスページをキャッシュする)

SELECT FLOOR(SUM(data_length+index_length)/POWER(1024,2)) InnoDBSizeMB
FROM information_schema.tables WHERE engine='InnoDB';

からそれを引きinnodb_buffer_pool_sizeます。答えが0より大きい場合、はい

私はこれについてDBAStackExchangeに書きました

専用のDBサーバーではInnoDBSizeMB+IndexSizesMB、RAMの75%を超えないようにしてください。

于 2012-07-31T20:48:07.240 に答える
2

MySQL で使用可能なメモリを見つけるにはmy.cnf、おそらく次の場所にある を参照してください。/etc/mysql/my.cnf

key_buffer_size = 264M

テーブルのインデックスのサイズを確認するには:SHOW TABLE status FROM [DBNAME]

于 2012-07-31T20:44:19.847 に答える