traditionally, i’ve always gone with myisam and replication. master takes all the inserts and slave handles all the reads and this architecture has worked well.
i’m working on a new project that involves a large number of updates to existing records (as opposed to the large number of inserts from before). the master isn’t holding up as well. the number of tables have also increased slightly (previous projects were in the range of 10 tables whereas this project has around 20 tables).
i’ve noticed a sharp drop in the key efficiency of the master, so i’ve boosted the key_buffer size on the master. it seems to help a bit, but the updates are still taking up to 1-2 seconds to complete at peak traffic (~1k qps). i thought it could be the limited number of open files affecting the system (because of the increase in number of tables as compared to previous projects), so i increased table_cache a bit, but i have yet to see any significant impact from that tweak…
should i start migrating the tables that see the most amount of updates to innodb because of the row-level locking? will there be a performance hit on the slave as a result of this?
these tables aren’t even that big right now (~500k rows). i’ve had tables with ~500 millions rows on myisam that ran more smoothly than this…
any advice would be greatly appreciated!!