powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Два клиента на одну таблицу
8 сообщений из 8, страница 1 из 1
Два клиента на одну таблицу
    #32332353
Guest10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Два пользователя программно (активно) Добавляют и Читают каждый свое множество записей в таблице.
Таблица имеет необходимые индексы, чтобы исключить последовательное сканирование при чтении.
У одного из пользователей программа вылетает с ошибкой sql=-244 isam=-154 (т.е. ресурс заблокирован).
Есть ли способы решения данной проблемы на уровне СУБД?
Увеличение времени ожидания освобождения ресурса не подходит, т.к.
для пользователя это будет уменьшением производительности программы.
...
Рейтинг: 0 / 0
Два клиента на одну таблицу
    #32332564
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблицы бывают lock mode Page (Row), у тебя какая?

если page, то alter table modify .... (rtfm Guide to SQL Syntax)
...
Рейтинг: 0 / 0
Два клиента на одну таблицу
    #32333022
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
а если режим блокировки таки строковый, то надо анализировать план запроса , тк возможно запрос выполняется так что в выборку попадают заблокированные записи .
...
Рейтинг: 0 / 0
Два клиента на одну таблицу
    #32333072
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и to wait должен быть больше 0, иначе будем налетать на что-нибудь вроде -244
...
Рейтинг: 0 / 0
Два клиента на одну таблицу
    #32333575
Guest10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уже установлено:
для таблицы: Lock Mode Row;
для сеанса: set lock mode to wait 30;

На данный момент известна причина:
клиентское приложение открывает транзакцию, которая длится более 30 сек и
в течении которой происходит добавление записей в таблицу,
А в это же время второй пользователь пытается удалить из этой таблицы свое множесвто
записей, которое с записями первого не пересекается, после чего появляется вышеприведенная
ошибка с оговоркой (key value locked), т.е. (если я правильно понимаю), блокировка индексной
информации.

А можно ли как-нибудь настроить индекс, что бы и этой ошибки не было ?
...
Рейтинг: 0 / 0
Два клиента на одну таблицу
    #32333737
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет.


автор писал:клиентское приложение открывает транзакцию, которая длится более 30 сек
В это время записи нельзя прочитать, т.е. нельзя узнать нужны они или нет второй транзакции.

автор писал:записей, которое с записями первого не пересекается, после чего Информикс откуда это знает? Может первая транзакция изменила бы записи так, что они стали пересекаться с первой транзакцией.

Тут можно играть уровнем изоляции, т.е. у второй транзакции установить dirty read, или записи положить в разные таблицы.
...
Рейтинг: 0 / 0
Два клиента на одну таблицу
    #32333835
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
1 развести пользователей можно, если модифицированные одним юзером записи не подпадают под выборку другого.
Для этого надо проанализировать план запроса с помощью set explain on, который надо выполнить перед запросом.


2 транзакция длится слишком долго для oltp-приложения. Что-то не так спланировано.

У меня например десятки пользователей вводят данные в одну большую таблицу, при этом каждый работает со своим множеством документов и никто друг друга не блокирует.
...
Рейтинг: 0 / 0
Два клиента на одну таблицу
    #32334379
Guest10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема решена.
Было исправлено клиентское приложение, т.е. уменьшена длина транзакции.

Всех благодарю за участие.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Два клиента на одну таблицу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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