В производстве, я столкнулся с этой проблемой.Informix DELETE запрос занимает много времени
Существует delete
, который занимает много времени для выполнения и, наконец, бросает ошибку SQL -243
.
Я получил запрос, используя onstat -g
.
Есть ли способ узнать, что заставляет его занять много времени и, наконец, выйти из системы?
Он использует COMMITTED READ
изоляция.
Это приводит к высокому использованию процессора Informix.
EDIT
Environment - Informix 9.2 на Solaris
Я не вижу никакой проблемы, связанные с индексами или логики приложения, но я подозреваю, что некоторые Informix коррупции.
Сессия содержит 8 блокировок на разных таблицах при выполнении этого запроса DELETE
.
Но, я не вижу никаких замков на столе, на котором выполняется delete
.
Будет ли что-то вроде, informix не может получить блокировку на столе?
Вы пытались запустить 'УДАЛИТЬ ОТ таблицы WHERE ...' как 'SELECT * FROM Table WHERE ...' (для любого подходящего подмножества всех столбцов) и рассмотрели план запроса? Как быстро это работает? Имеются ли в таблице столбцы blob или столбцы smart blob? Каков план запроса для DELETE; как он сравнивается с планом SELECT? Есть ли недостаток в индексе, который ускорит это? Сколько индексов находится на столе? Существует ли так много, что сокращение числа индексов приведет к повышению производительности? Какая версия Informix? Запуск на платформе? –
Таблица имеет индекс группы по 2 столбцам, а удаление также основано на двух столбцах. – cppcoder