Во-первых, вы должны знать, что IBM Informix Dynamic Server (IDS) версии 9.40 больше не поддерживается IBM;ни версия преемника, 10.00.Вы должны планировать обновление, возможно, до 11,70, возможно, до 11,50.
Не существует способа всестороннего отслеживания блокировок.Одна из причин этого заключается в том, что такое отслеживание приведет к значительному замедлению системы - очень значительному замедлению.Блокировки, как правило, являются вторым по величине компонентом разделяемой памяти (за пулом буферов, содержащим страницы данных), поэтому их много, и они часто очень активны, а блокировки часто держатся мимолетно (для небольших долейсекунда или даже доли миллисекунды).Объем данных, создаваемых в результате такой регистрации, был бы необычайно большим и его было бы очень трудно просеять.
Если бы вы работали в более поздней версии, возможно, есть некоторые варианты, которые помогут с DB-Cron и Admin API (конечно, но шансы были бы лучше), но с 9.40 варианты довольно строго ограничены.
Ближайший подход, который я могу придумать, это снимок с onstat -k -u -r 1
.-k
сообщает о таблице блокировок (как вы уже знаете);-u
сообщает о пользователях (сеансах), а -r 1
повторяет команду каждую секунду.Вы можете добавить другие запросы данных, как считаете нужным;-g ses
предоставил бы более подробный отчет о сессиях (если вы используете DBSA, обычно пользователь informix
при запуске команды).Но это 1-секундная выборка ... единственная хорошая новость заключается в том, что когда блокировка установлена на столе, она может некоторое время зависать (потому что вы замечаете проблему), поэтому -g ses
или -u
выходной скажет вам, кто или что применяет блокировку.Но объем данных в промежуточный период будет большим.
Вам необходимо просмотреть весь SQL-код в системе, чтобы найти вещи для блокировки таблиц.Есть ли последовательность в выборе времени?Может ли это быть, например, UPDATE STATISTICS, выполняемая заданием cron?Я полагаю, что мимолетные замки приобретаются быстро;это также кое-что, что было улучшено в выпусках начиная с вашей версии IDS.