【MySQL】The InnoDB memory heap is disabled とは?
問題
MySQLのエラーログに、こんなのがあるんですけど、大丈夫ですか?
InnoDB: The InnoDB memory heap is disabled
答え
MySQL5.5のデフォルトの設定がされているMySQLのエラーログに「InnoDB: The InnoDB memory heap is disabled」が現れるのは、よくあることで、正常。
MySQL5.1でも、innodb_use_sys_mallocがon(1)になっていると表示される
innodb_use_sys_malloc=ONというのは、InnoDBが実装しているメモリーマネージャーではなくて、OSのメモリ割り当てを使うということ(5.5のデフォルト)。
いまどきのOSのメモリ割り当ては、通常は高速である。
InnoDBのような重いマルチスレッドのアプリケーションを動かすのに、かつてはそれが遅かったので、InnoDBは独自に実装したメモリーマネージャーを持っている。
InnoDBのメモリーマネージャーがデフォルトのMySQL5.1でも、OSのメモリ割り当てを使う方がおすすめ。
気になる場合は、差はあまりないと思われるが、両方試してみて速い方を使うとよい。
OSのメモリ割り当てが使われるときは、OSから必要に応じてメモリを割り当ててもらうので、innodb_additional_mem_pool_sizeの設定は、無視される。
innodb_use_sys_mallocの設定がなくても、メモリがもっと必要になったときにはOSに割り当ててもらうので、古いMySQL4.0以外では、innodb_additional_mem_pool_sizeを設定する必要もない。
参考
http://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html#sysvar_innodb_use_sys_malloc
http://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html#sysvar_innodb_additional_mem_pool_size
コメント