Как заблокировать таблицу для остальных тредов

Статус
Закрыто для дальнейших ответов.

CamaroSS

Well-Known Member
Регистрация
21.02.2012
Сообщения
176
MySQL:

Есть MyISAM таблица, записи в которой периодически чистятся (с ~12млн до ~7млн)
Способ нормально почистить её, никому не мешая, я нашёл. Но после этого нужно прогнать оптимайз, который гораздо резвее идёт, если сначала дропнуть индексы, а потом их перестроить.
Так вот,

ALTER TABLE t1 DISABLE KEYS;
--> сюда
OPTIMIZE TABLE t1;
ALTER TABLE t1 ENABLE KEYS;

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

Вопрос: как заблокировать таблицу для всех остальных на время операции?
 

ManFlightFan

Новичок
Регистрация
17.05.2013
Сообщения
3
ммм... что-то подобное делали. Ключевое слово - триггер. А, вот, как взводили его - не помню. Наверное это было на "Microsoft SQL Server", а не на MySQL.
 

CamaroSS

Well-Known Member
Регистрация
21.02.2012
Сообщения
176
Ответили на StackOverflow: http://stackoverflow.com/questions/16608312/lock-myisam-table-for-maintenance

В общем, LOCK TABLES t1 WRITE работает. А я поленился этот пункт в мануале прочесть.
 
Статус
Закрыто для дальнейших ответов.
Верх Низ