Question: What about this idea:

* I've got a 4GB MySQL database, with few UPDATEs.
* On system startup I copy it to RAM and run it from there.
* Every couple of hours or even on UPDATES, I dump it to disk.

...as a kind-of poor-man's replacement for revisiting all code routines using the db and implementing memcached or similar.

Answer: 
Use the the MEMORY storage engine *on a read only slave* to do your reads from, is exactly what you *really* want and a sane setup. Forget "dumping it to disk" (?!) or other strange things.

You can even put the slave as another instance on your existing server if you can't afford to setup a dedicated slave, but properly tuning the MySQL parameters for mostly read workloads will bring a significant performance enhancement too!
use innodb engine for all your tables, in my.cnf set innodb\_buffer\_pool\_size to 2-3GB of ram, during startup run full table scan for all tables [or just mysqldump -A]. this should give you very decent read-only performance if you have good indices on all tables.

also if you go with this solution your code will be simpler - you'll not have to take care of sync'ing back from in-MEMORY tables back to myisam/on-disk tables.