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

Есть таблица MyISAM вида id, text (около 1 кб каждая запись), индекс только по id, строк около 200 000, при удалении 1 или 100 записей запросом вида delete… where `id` in (1, 50, 60), таблица недоступна для чтения около 10 секунд.

Есть ли варианты без смены типа таблицы удалять записи не блокируя чтение? Спасибо!
  • Вопрос задан
  • 3649 просмотров
Пригласить эксперта
Ответы на вопрос 4
AmdY
@AmdY
PHP и прочие вебштучки
200k строк ото мелкая таблица, удаление должно проходить мгновенно, уж точно не секунды. Похоже, у вас рисуется проблема в другом месте, смотрите как бы не потерять всю таблицу, с MyISAM это бывает.
Ответ написан
IlyaEvseev
@IlyaEvseev
Opensource geek
dev.mysql.com/doc/refman/5.0/en/delete.html — ключи LOW_PRIORITY и в особенности QUICK.
dev.mysql.com/doc/refman/5.0/en/delete-speed.html — increase key_buffer_size.
Ответ написан
afiskon
@afiskon
Я не специалист, но по-моему нельзя. Любое изменение в MyISAM таблицах приводит к блокированию всей таблицы. Если вы часто производите такие операции, возможно, вам имеет смысл перейти на InnoDB (или альтернативный движок с блокировкой на уровне строк).
Ответ написан
Sekira
@Sekira Автор вопроса
IlyaEvseev, там по первой ссылке написано на счет DELETE QUICK, что даже после добавления новых данных пропуск в индексе останется, пока не будет выполнена команда OPTIMIZE TABLE, это касается таблиц с AUTO_INCREMENT колонкой.
AmdY, все нормально с таблицами, я же выше написал Вам, что на двух компьютерах одно и тоже. Может быть тормозов быть и не должно, если бы все поля были числовыми и без индексов, а здесь каждое поле с текстом по 1 кб.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы