Optimising MySQL database with read only tables
Short answer:  You are making unnecessary work for yourself.  Use InnoDB for everything.  Forget about "readonly".

Long answer:


MyISAM is dying.
InnoDB is faster in some benchmarks than either MyISAM or MEMORY.
InnoDB "caches" things in its "buffer_pool", which is in RAM.  If you were using MEMORY to get things held in RAM, then "why bother".
Because the buffer_pool is a "cache", there is no requirement that all the data and indexes be held in memory.  Instead, only the "frequently" used blocks are kept in memory.  Since it is at a block level, it is even better than a human trying to second guess what to pin in memory (via MEMORY engine) and what not to.
Using space for MEMORY tables takes away from using RAM for the buffer_pool
Both MyISAM and MEMORY lock the entire table (when needed); InnoDB locks only rows.
True, MEMORY tables are not "persistent".  InnoDB tables are persistent.


Bottom line...


Use InnoDB for all of your tables.
Set key_buffer_size to 20M only because some system tables use that engine.
Set innodb_buffer_pool_size to 70% of RAM (or a smaller percentage if you have less than 4GB of RAM).