Перейти к содержимому

Фотография
- - - - -

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


  • Вы не можете создать новую тему
  • Закрытая тема Тема закрыта
Сообщений в теме: 2

#1 CamaroSS

CamaroSS

    Частый гость

    Топикстартер
  • Участник
  • 52
    176 сообщ.

Отправлено 17 Май 2013 в 09:19

MySQL:

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

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

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

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

Сообщение отредактировал CamaroSS: 17 Май 2013 в 09:28

  • 0

Спонсор

#2 ManFlightFan

ManFlightFan

    Прохожий

  • Новичок
  • 0
    3 сообщ.

Отправлено 17 Май 2013 в 10:15

ммм... что-то подобное делали. Ключевое слово - триггер. А, вот, как взводили его - не помню. Наверное это было на "Microsoft SQL Server", а не на MySQL.
  • 0

#3 CamaroSS

CamaroSS

    Частый гость

    Топикстартер
  • Участник
  • 52
    176 сообщ.

Отправлено 17 Май 2013 в 16:50

Ответили на StackOverflow: http://stackoverflow...for-maintenance

В общем, LOCK TABLES t1 WRITE работает. А я поленился этот пункт в мануале прочесть.
  • 0



Похожие темы Свернуть

Статистика

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей