Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 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), а на удалённом сервере стоит вообще самая свежая версия. И там, и там при разных настройках наблюдается одинаковое поведение - блокируется вся БД при операциях с одной таблицей.
Помогите, пожалуйста, решить этот вопрос.
Неактивен
Страниц: 1