MySQL « Тяжелый запрос в MySQL тормозит все остальные
Есть таблица (MyISAM) на 1,500,000 записей, раз в несколько часов по крону запускается скрипт и делает очень тяжелый запрос в нее (только чтение)
Проблема в том что при этом начинают жутко тормозить все остальные запросы и соответственно всеь сайт. Простая выборка по id, которая занимала 0.001 сек, занимает 3-5 сек :(
Можно ли как-то сделать, чтобы пусть тяжелый запрос выполнялся медленнее, но при этом все остальные работали нормально?
Все это на выделенном сервере с 2 xeonами и 16 gb памяти...
Вот текущий my.cnf:
port = 3306
socket = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
thread_concurrency = 8
Проблема в том что при этом начинают жутко тормозить все остальные запросы и соответственно всеь сайт. Простая выборка по id, которая занимала 0.001 сек, занимает 3-5 сек :(
Можно ли как-то сделать, чтобы пусть тяжелый запрос выполнялся медленнее, но при этом все остальные работали нормально?
Все это на выделенном сервере с 2 xeonами и 16 gb памяти...
Вот текущий my.cnf:
port = 3306
socket = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
thread_concurrency = 8
1 ответов
я бы посоветовал настроить master-slave репликацию. Все боевые запросы в master, все запросы которые по крону делаются - в slave. Раз вы все равно только читаете, то это может вам помочь
может стоит посмотреть в сторону InnoDB, особенно учитывая специфику блокировки, когда в MyISAM блокируются таблицы, а в InnoDB отдельные записи?
Да, мне тоже кажется, что дело в заблокированных таблицах. Если ничего не использовано специфичного для MyISAM (типа FULLTEXT индексов, например) - попробуйтей InnoDB.