Временно заблокируйте таблицу innoDB - PullRequest
2 голосов
/ 07 мая 2010

Я делаю большие вставки, состоящие из нескольких тысяч строк в моем текущем веб-приложении, и я хотел бы убедиться, что никто не может ничего сделать, кроме чтения таблицы, пока вставки не будут выполнены.

Каков наилучший способ сделать это, сохраняя доступность чтения открытой для обычных пользователей, не являющихся администраторами?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 07 мая 2010

Поскольку вы только вставляете (не обновляете), это не должно быть проблемой. Просто вставьте записи в одной транзакции.

InnoDB поддерживает блокировку на уровне строк, если я правильно помню, поэтому даже обновления не должны быть проблемой.

2 голосов
/ 07 мая 2010

Вам также может понадобиться изменить уровень изоляции по умолчанию:

 set transaction isolation level serializable;
 start transaction;
 // insert data
 commit
1 голос
/ 07 мая 2010

Почему бы просто не сделать вставку в одной большой транзакции? Это как бы исключает необходимость какой-либо блокировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...