私のデータベースには、50k、50k、5mの行を持つ3つのテーブルが含まれています。それらはすべてInnoDBです。(最大のものにはvarchar [256]が含まれています)。私のデータベースのサイズは214MBで、クエリで取得しましたinformation_schema.TABLES
(これにより、ディスク上のデータとインデックスのサイズがわかりますか?)
1.5GBのRAMがあり、すべてのテーブルのエンジンをMEMORYに変換しようと思いました。しかし、最大のテーブルの変換を開始すると、1114エラーが発生しました。
max_heap_table_size
いくつかの調査の結果、 16MBしかないことがわかりました。そこで、max_heap_table_size
とtmp_table_size
を1GBに設定しました。
もう一度変換しようとすると、mysqld.exeプロセスのメモリ使用量が1.2GBを超え、半分の行を変換する前に同じエラーが再びスローされました。最大のテーブルから行の半分を削除し、最終的には700MBのメモリに収まりました。
なぜ214MBのデータベースが、4倍以上のメモリに収まらないのですか?
プロセス内で、データとインデックス以外にメモリを消費しているものはありますか?
マシン:Intel P4-1.9GHz、1.5GB RAM、Win7Ultimate。