Задавайте вопросы, мы ответим
Вы не зашли.
Столкнулся с интересной проблемой TRUNCATE выполняется ОЧЕНЬ долго:
Отредактированно vaspet (11.03.2009 17:03:33)
Неактивен
Табличка MyISAM — вполне возможно, что она занята какими-то действиями.
TRUNCATE пересоздает табличку, а для этого к ней нужен эксклюзивный доступ.
Если при этом табличка занята, то он ждет.
Неактивен
А как бы мне получить к ней эксклюзивный доступ?
Такое прокатит?
- пользуемся таблицей (почти только SELECT)
- в 2:30 БЛОКИРУЕМ к ней доступ
- TRUNCATE // удаляем
- INSERT // обновляем
- 2:32 РАЗБЛОКИРУЕМ табличку
- // можно дальше пользоватся
Как (РАЗ)БЛОКИРОВАТЬ?
Отредактированно vaspet (12.03.2009 11:45:33)
Неактивен
vaspet написал:
А если "LOCK TABLES" поставить перед "TRUNCATE TABLE", то очистка не произойдет?
Произойдет ошибка, так как в рамках транзакции или явной блокировки нельзя осуществить операцию truncate.
В данном случае блокировка вам ничем не поможет, так как если таблица занята, то установка блокировки будет ожидать пока она освободится.
P.S. Подробнее о блокировках можно посмотреть http://sqlinfo.ru/articles/info/10.html
Неактивен