I have a MySQL database with 15 tables. Three of them are used for website authentication and three other are tables that are frequently read and written to. Then other tables are set in stone and I'd never need to change them unless I make some significant changes to the web app.
Is there anything I can do to make my database more efficient and for performance, given that I don't need to write to these tables at runtime?
From Googling, I was able to see some settings for MyISAM, but would prefer to stick with InnoDB. Couldn't find any other info other than certain people having their entire database as read only. However, mine has some tables that I'd need to read/write.
EDIT:
Four tables are 4MB and below and one is 7.55MB. Also wouldn't I then need to adjust all my procedures to check whether the table in memory exists or not? Cause it may disappear when the instance is restarted or something.
MEMORY
engine has significant limitation on column types at least. It would be better to migrate to the InnoDB and configure the memory pools big enough to fit all the data/indexes in the memory.key_buffer_size
option) separately while data cached as possible (read_buffer_size
). InnoDB engine has data and indexes combined and cached into the memory reserved byinnodb_buffer_pool_size
option. If your tables are as small as described they are already are in-memory. Certainly if there are no other heavy databases on the server that share the InnoDB buffer pool. So if you are experienced some performance issues you have to inspect your queries/indexes, not the storage engine.