В сети можно найти очень много советов, как оптимизировать работу mySQL. Мне тоже выпала доля провести оптимизацию mySQL. Я скачал файл mysqltunner.pl и запустил его на своем сервере (RAM — 28Gb, CPU Intel(R) Xeon(TM) MP CPU 3.16GHz их два, по 4 ядра в каждом). Первое, что я сделал, это я разобрал из чего складывается
server_buffers = key_buffer_size + innodb_buffer_pool_size + innodb_additional_mem_pool_size + innodb_log_buffer_size + query_cache_size
и
total_per_thread_buffers = read_buffer_size + read_rnd_buffer_size + sort_buffer_size + thread_stack + join_buffer_size
Оба этих параметра используются для подсчета, сколько mySQL будет использовать памяти.
server_buffers + total_per_thread_buffers * max_connections
Так, как у меня на сервере 28GB — я решил, что mySQL я отдам в среднем 20Gb памяти. Подогнав все значение под эту величину я перезапустил mySQL. Время обработки sql запросов уменьшилось, что было очень хорошо. Дальше я стал оптимизировать значение — key_buffer_size. Я установил это значение равное 70% от общей памяти на сервере и это тоже уменьшило время ответа. Так же хотелось бы Вам сказать, что query_cache_size нельзя увеличивать бесконечно, так как если query_cache_size будет больше 128Мб это может сказать на производительности. Лучше всего выставить значения и считать их базовыми и через 2 суток запустить mysqltunner.pl. Скрипт даст рекомендации, что можно сделать, что можно подкрутить и отталкиваясь от базовых настроек увеличивать те или иные значения.
Удачного Вам тюнинга