Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте!
Насколько я понял из документации, для таблиц MyISAM есть возможность выполнения одновременного выполнения запросов SELECT и INSERT без взаимных блокировок (при отсутствии "дырок" в середине таблицы). По умолчанию concurrent_insert=1 - это означает, что данный режим включен?
Если да, то непонятно, почему при выполнении длительной выборки запросы на вставку все же блокируются. Количество вставок - несколько десятков в секунду (без выборки апдейты пролетают нормально, без очередей). Таблица - журнал посещений, т.е. записи только добавляются и не удаляются, т.е., по идее, фрагментации не должно быть. Вообще, этот режим - панацея для подобной конкуренции или все же могут быть такие запросы, когда он не будет работать и лучше поэкспериментировать с InnoDB?
Отредактированно shutdown (30.05.2008 00:06:40)
Неактивен
Если проблема в ожидании клиента пока выполнится SELECT - можно решить через INSERT DELAYED.
http://dev.mysql.com/doc/refman/5.1/en/ … layed.html
Если не в этом - InnoDB вполне нормальное решение.
Неактивен
DELAYED не годится, т.к. после INSERT используется LAST_INSERT_ID()...
Неактивен
Попробуйте concurrent_insert=2
http://dev.mysql.com/doc/refman/5.0/en/ … serts.html
Innodb попробовать также стоит, в Innodb полная мультиверсионность, проблем с блокировками быть не должно в Вашей ситуации.
Неактивен