SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 30.05.2008 00:05:25

shutdown
Завсегдатай
Зарегистрирован: 29.05.2008
Сообщений: 46

concurrent inserts

Здравствуйте!
Насколько я понял из документации, для таблиц MyISAM есть возможность выполнения одновременного выполнения запросов SELECT и INSERT без взаимных блокировок (при отсутствии "дырок" в середине таблицы). По умолчанию concurrent_insert=1 - это означает, что данный режим включен?
Если да, то непонятно, почему при выполнении длительной выборки запросы на вставку все же блокируются. Количество вставок - несколько десятков в секунду (без выборки апдейты пролетают нормально, без очередей). Таблица - журнал посещений, т.е. записи только добавляются и не удаляются, т.е., по идее, фрагментации не должно быть. Вообще, этот режим - панацея для подобной конкуренции или все же могут быть такие запросы, когда он не будет работать и лучше поэкспериментировать с InnoDB?

Отредактированно shutdown (30.05.2008 00:06:40)

Неактивен

 

#2 30.05.2008 06:13:42

EugeneTM
Гуру
Зарегистрирован: 11.04.2008
Сообщений: 89

Re: concurrent inserts

Если проблема в ожидании клиента пока выполнится SELECT - можно решить через INSERT DELAYED.
http://dev.mysql.com/doc/refman/5.1/en/ … layed.html

Если не в этом - InnoDB вполне нормальное решение.

Неактивен

 

#3 30.05.2008 12:59:07

shutdown
Завсегдатай
Зарегистрирован: 29.05.2008
Сообщений: 46

Re: concurrent inserts

DELAYED не годится, т.к. после INSERT используется LAST_INSERT_ID()...

Неактивен

 

#4 30.05.2008 13:12:04

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: concurrent inserts

Попробуйте concurrent_insert=2
http://dev.mysql.com/doc/refman/5.0/en/ … serts.html

Innodb попробовать также стоит, в Innodb полная мультиверсионность, проблем с блокировками быть не должно в Вашей ситуации.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson