|
|
|
| Я запустил скрипт, который из двух таблиц общим объёмом 160М делает
третью с уникальным индекстом по по довольно сложному алгоритму.
Из-за множества обращений к первым двум таблицам, скрипт работает медленно, много часов.
Но так как он работает локально это меня не беспокоило до тех пор, пока не выяснилось, что другие обращения к MySQL тормозят очень сильно. То, что выполнялось за долю секунды, сейчас не укладывается в 30 секунд.
Как мне сделать чтобы выполнение одного долгого скрипта не оказывало значительного торможения на другие?
вот выдержка из .ini:
skip-character-set-client-handshake
default-storage-engine=MyISAM
#sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
max_connections=100
query_cache_size=0
table_cache=256
tmp_table_size=5M
thread_cache_size=8
#*** MyISAM Specific options
myisam_max_sort_file_size=100G
myisam_max_extra_sort_file_size=100G
myisam_sort_buffer_size=8M
key_buffer_size=300M
read_buffer_size=64K
read_rnd_buffer_size=256K
sort_buffer_size=212K
Разобрался сам.
Проблема была в том, что скрипт грузил процессор ровно на 100%
Стоило мне добавить внутри цикла запись в файл коротенького текста, параллельные скрипты стали нормально выполняться. Видимо пока процесс ждёт записи, процессор успевает очередь запросов обработать, а иначе он об этой очереди "не знает". | |
|
|