I have a few good articles I wrote you that could use to tune MySQL from a variety of aspects. Have fun with them !!!
UPDATE 2011-05-28 06:43
Make sure you eliminate the use of "SELECT * FROM tbl ..." from your application. Replace them with "SELECT column1,column2,... FROM tbl ...". That way, you reduce the amount of data you transmit through your network.
Reduce the number of Stored Procedure calls (also tune the SQL commands within the Stored Procedure) you make, especially if your application relies on client-side processing of data. If you can move some of the BI aspects into the Stored Procedure, you will reduce network latency as well.
If you are using MySQL Replication, make sure the Master and Slave are in the same subnet. In fact, use crossover cables over 192.168.x.x. and have the slave use the 192.168.x.x. subnet of the master as the master host. In terms of replication between data centers, you should use thedistribution master topology to transmit only binary logs, which will offload that function from the master.
UPDATE 2011-06-13 17:10
You may want to look over the slow query log, not the general log. You may need to change the variable long_query_time to 1 second (default is 10) so as to see what queries take longer than 1 second. You could then run EXPLAIN on all SELECT queries and hopefully find what indexes each table could potentially need.
What are the main differences between InnoDB and MyISAM?
How to improve InnoDB delete performance?
How to safely change MySQL innodb variable 'innodb_log_file_size'?
Clarification on MySQL innodb_flush_method variable
http://stackoverflow.com/questions/5174396/innodb-performance-tweaks/5348378#5348378 (MySQL 5.5 only)