Гость
Map
Форумы / Informix [игнор отключен] [закрыт для гостей] / Задачка для ДБА-5 / 8 сообщений из 8, страница 1 из 1
23.04.2016, 00:44
    #39222935
Выбегалло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка для ДБА-5
Имеется жалоба от программистов, что хранимая процедура иногда падает с текстом "Could not do a physical-order read to fetch next row" и isam тоже говорит, что "ISAM error: record is locked".

Я предлагаю установить SET LOCK MODE TO WAIT и не париться.
НО: сделав такое один раз, эта сессия и по жизни пойдет дальше с бесконечным ожиданием окончания блокировки. Что может отразиться на поведении приложения. То есть менять код, добавлять в него "SET LOCK MODE TO WAIT" перед вызовом хранимки и восстанавливать предыдущее значение должны разработчики приложения. У которых все расписано на месяцы вперед, и у ихних тестеров тоже.

Что бы вы сделали ?



В таком вот аксепте
...
Рейтинг: 0 / 0
23.04.2016, 01:32
    #39222945
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка для ДБА-5
Выбегалло, вариант а:
Сделать самому сервисную хп. Которая получает текущее состояние лок моуд, меняет на указанное и сообщает на выходе запомненное.
В проблемную хп добавляется переменная для запоминания состояния на входе и два вызова сервисной хп - в начале и в конце проблемной, со сменой лок моуд и восстановлением.
Но это не совсем правильный путь, скорее временный. По хорошему нужно разбираться в причинах ошибки. Или у вас работа сессии в режиме ноу вейт - это естественное поведение?
...
Рейтинг: 0 / 0
23.04.2016, 01:34
    #39222946
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка для ДБА-5
И да, на каких версиях информикс должно работать решение?
...
Рейтинг: 0 / 0
23.04.2016, 03:18
    #39222959
Выбегалло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка для ДБА-5
АнатоЛойВыбегалло, вариант а:
Сделать самому сервисную хп. Которая получает текущее состояние лок моуд, меняет на указанное и сообщает на выходе запомненное.
В проблемную хп добавляется переменная для запоминания состояния на входе и два вызова сервисной хп - в начале и в конце проблемной, со сменой лок моуд и восстановлением.
Но это не совсем правильный путь, скорее временный. По хорошему нужно разбираться в причинах ошибки. Или у вас работа сессии в режиме ноу вейт - это естественное поведение?

Ну, собственно, задачка и заключается в получении значения set lock mode wait и установлении его взад :)
Версии 11.5 и выше.
...
Рейтинг: 0 / 0
23.04.2016, 03:18
    #39222960
Выбегалло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка для ДБА-5
то есть - задачка на знание внутренностей :)
Как получить значение lock mode wait ?
...
Рейтинг: 0 / 0
25.04.2016, 10:13
    #39223607
ak-47
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка для ДБА-5
Выбегаллото есть - задачка на знание внутренностей :)
Как получить значение lock mode wait ?

Код: sql
1.
select sqs_sessionid, sqs_lockmode from syssqlstat



-1 wait
0 no wait
>0 wait time

Но я бы не сказал, что так надо решать проблемы ожидания блокировок.
...
Рейтинг: 0 / 0
25.04.2016, 17:58
    #39224100
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка для ДБА-5
Посмотреть сколько таблиц имеют lock mode page
;-)
...
Рейтинг: 0 / 0
26.04.2016, 01:15
    #39224300
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка для ДБА-5
ВыбегаллоАнатоЛойВыбегалло, вариант а:
Сделать самому сервисную хп. Которая получает текущее состояние лок моуд, меняет на указанное и сообщает на выходе запомненное.
В проблемную хп добавляется переменная для запоминания состояния на входе и два вызова сервисной хп - в начале и в конце проблемной, со сменой лок моуд и восстановлением.
Но это не совсем правильный путь, скорее временный. По хорошему нужно разбираться в причинах ошибки. Или у вас работа сессии в режиме ноу вейт - это естественное поведение?

Ну, собственно, задачка и заключается в получении значения set lock mode wait и установлении его взад :)
Версии 11.5 и выше.
Хех, ну для вашей версии уже ответили. Хочу сказать, что задача таким же подходом решалась и на 7.31, причём прикладная проблема была установить новейт, после чего корректно вернуть. И делалось это для собственной реализации unique sequence с разрывами и резервированием подмножеств последовательности при активном конкуррентном доступе :).
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / Задачка для ДБА-5 / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]