Mysql – Why does TokuDB say to remove innodb_buffer_pool_%

innodbMySQLtokudb

The TokuDB quick start guide says "After converting your tables to TokuDB, you should comment out the global options related to memory caches (ie: innodb_buffer_pool%)."

If TokuDB supports both TokuDB and InnoDB database engines, why would I comment out these settings?

Best Answer

The reason is that you don't want to have heavyweight tables both for the TokuDB engine and the InnoDB engine.

These two engines both need their resources. They are both very smart about managing resources inside their own scope, and yet they are completely ignorant about one another.

So while InnoDB can coordinate its I/O between multiple query executions, it is unaware that TokuDB may at the same time use the disk in some way.

In particular, the "After converting your tables to TokuDB, you should comment out the global options related to memory caches (ie: innodb_buffer_pool%)." relates to the convention that you provide InnoDB with most of the OS available memory. In such case little to no memory remains for TokuDB to operate with.

A situation where you would have large tables in both engines is undesired and would very probably lead to poor performance for both engines. It's just fine to leave some small, non-frequently accessed InnoDB tables with a small allocation of memory.