mysql インデックスが利用可能なメモリに完全に収まるかどうかを判断する方法はありますか? もしそうなら、どうすればいいですか:
- mysql インデックスのサイズを決定する
- アプリケーションで使用可能なメモリを決定する
- インデックスが完全にメモリに収まるかどうかを判断する
ストレージエンジンに依存
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より大きい場合、はい
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%を超えないようにしてください。
MySQL で使用可能なメモリを見つけるにはmy.cnf
、おそらく次の場所にある を参照してください。/etc/mysql/my.cnf
key_buffer_size = 264M
テーブルのインデックスのサイズを確認するには:SHOW TABLE status FROM [DBNAME]