Почему MySQL запросы берет блокировку таблицы в изолированном чтении незафиксированным? - PullRequest
1 голос
/ 06 января 2010

Есть ли способ получить запросы MySQL, чтобы не блокировать таблицы myisam?

Похоже, моя проблема в том, что мой индексатор поиска Sphinx выполняет блокировку одной из моих таблиц myisam в течение более 60 с, что, по-видимому, заставляет операторы обновления ждать освобождения блокировок, что, в свою очередь, заставляет другие запросы ждатьобновить заявления, чтобы завершить.Индексатор использует mysql_use_result и выполняет большую часть работы по индексированию перед вызовом mysql_free_result.По крайней мере, это мое лучшее предположение о том, что происходит, но, пожалуйста, дайте мне знать, если вам это кажется неправильным.

Один из способов решения этой проблемы состоит в разделении запросов индексатора на диапазоны идентификаторов.Но, похоже, мне не нужно было этого делать, поскольку мне действительно не нужен этот запрос, чтобы предотвратить одновременный запуск любого другого запроса.Производительность гораздо важнее, чем согласованность в этом случае использования.

Спасибо!

1 Ответ

1 голос
/ 07 января 2010

Похоже, что запросы mysql всегда блокируют чтение таблиц myisam.

Решением моей проблемы было установить low-priority-updates = 1 в разделе [mysqld] my.cnf.

Мне все еще интересно, есть ли способ сделать запросы в MySQL без блокировок чтения, но я открою другой вопрос с лучшим названием для этого.

Спасибо!

...