SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 08.01.2013 08:26:03

Neborya
Участник
Зарегистрирован: 08.01.2013
Сообщений: 1

MyISAM - Блокировка всей БД вместо 1 таблицы

Здравствуйте,
столкнулся с проблемой, когда MySQL при выполнении запроса OPTIMIZE, DELETE и др. блокирует не только саму таблицу, но и всю ДБ. Долго искал решение в Google. Не нашёл, но наткнулся на описание точно такой же проблемы:

Добрый день.

Mysql 5.0.32 на Debian
Таблицы - все MyISAM
Сервер - 1 CPU, RAM 4GB
Кеши и буферы в my.cnf настроены
Все запросы выполняются под одним юзером с разных хостов

Столкнулся с очень непонятной для меня ситуацией:
Запрос SELECT или REPAIR TABLE или OPTIMIZE TABLE, или даже выполнение Хранимой процедуры и т.д., выполняемый на одной таблице - блокирует все остальные SELECTы или UPDATE, которые даже никак не связаны с этой таблицей.

Например, выполняется ХП, она обращается к двум таблицам (tab1 и tab2), может задержать запрос к tab3, и пока не закончится выполнение ХП, select из tab3 так и будет висеть.

Или например идёт REPAIR TABLE picture (или OPTIMIZE ), при этом невозможно считать из product.
picture весьма тяжелая - 14ГБ, полмиллиона записей, optimize выполняется 400 сек - вся база висит и ждет пока не закончится обработка picture.

Т.е. теряется весь смысл распралеливания и многозадачности.
Как сказано в документации - недостаток MyISAM, что он блокирует конкретную таблицу, ну а тут происходит блокирование всей Базы данных.

Перейти на InnoDB пока нет возможности - используется FULL TEXT SEARCH и прикручивать Sphinx тоже пока нельзя.

Кто нибудь встречался с такой проблемой? В какую сторону копать?

Уточню, что версия MySQL на моём компьютере отличается (5.1.33), а на удалённом сервере стоит вообще самая свежая версия. И там, и там при разных настройках наблюдается одинаковое поведение - блокируется вся БД при операциях с одной таблицей.

Помогите, пожалуйста, решить этот вопрос.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson