SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
てるてる動画

【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

関連するメモ

コメント