Question: It's an InnoDB database. The query cache has 1.2GB in size with 300k queries in the cache. Most of the cached queries are related to 3 major tables (260MB data length plus 600MB index length altogether). Everytime I tried to insert new entry or update existing entries in these 3 tables, MySQL slowed down a lot just like the server is dead. I got "Timeout" if I open my website in browser.

I check the Munin stats, it shows 95% of the query cache are cleared after the operation so I guess the sudden overload was caused by inserting entries to heavy-read tables. And during the overload, Munin just shows a white strip on the graph so you may get an idea on how bad the situation was.

How can I optimize this?

Answer: 
You could use a tool such as [vnstat](http://www.go2linux.org/traffic-monitor-for-linux) to graph your bandwidth. Once `vnstat` is running, launch a big copy of a file from a computer to another, using `dd` for example (try to really limit the CPU usage so it doesn't get to be the limiting factor). If your HDD is fast enough (so the network is the limiting factor), it should give you a good idea of your bandwidth.
Best practice is to have the cables certified from the person installing it. YOu pretty much need special equipment for doing so - then you get exact measurementy that your cabling adheres to a specific standard. SHould have bee done at install time and you should have gotten the measurement sips that the tester prints out.