powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA 11.0.1 - Получить только незаблокированные данные - как?
14 сообщений из 14, страница 1 из 1
ASA 11.0.1 - Получить только незаблокированные данные - как?
    #36444223
v_smirnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток All!

Хитрую задачку подкинули, в лоб решить ее не получилось.

Дано - большая таблица с данными (по большому счету это список товаров на складе, идентификатор+дата поступл+изначально+остаток, косяк структуры вижу, но сейчас переделать что-либо в структуре нет возможности ).

Клиентское приложение запрашивает список и начиная с первого элемента меняет часть данных по "Товар1" (остаток). Время транзакции около 40-60 секунд.
Другое приложение то же запрашивает список и хочет менять данные по "Товар1", но нарывается на блокировку (что вполне логично).

Можно ли как-нибудь в select отсечь заблокированные записи?
...
Рейтинг: 0 / 0
ASA 11.0.1 - Получить только незаблокированные данные - как?
    #36444253
v_smirnov,

FROM table-expression, …

WITH table-hint The WITH table-hint clause allows you to specify the behavior to be used only for this
table, and only for this statement.

table-hint:
HOLDLOCK
| NOLOCK
| READCOMMITTED
| READPAST
| READUNCOMMITTED
| REPEATABLEREAD
| SERIALIZABLE
| UPDLOCK
| XLOCK
| FASTFIRSTROW

READPAST Instructs the database server to ignore, instead of block on, rows that have write locks. Used with isolation level 1 (only). Results may vary depending on the optimization strategy used by
the optimizer, particularly if the hint is specified on only a subset of the tables in the query.
...
Рейтинг: 0 / 0
ASA 11.0.1 - Получить только незаблокированные данные - как?
    #36444374
v_smirnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо добрый человек!

Что-то я стал невнимательным ;( пора в отпуск ...
...
Рейтинг: 0 / 0
ASA 11.0.1 - Получить только незаблокированные данные - как?
    #36444386
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если другое приложение хочет менять данные, то с READPAST аккуратнее
...
Рейтинг: 0 / 0
ASA 11.0.1 - Получить только незаблокированные данные - как?
    #36444435
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я в смысле, что в данном случае по тому, что возвратит select c READPAST вряд ли можно будет правильно оценить и тем более менять данные по остаткам товаров на складе
...
Рейтинг: 0 / 0
ASA 11.0.1 - Получить только незаблокированные данные - как?
    #36444489
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v_smirnov wrote:

> Можно ли как-нибудь в select отсечь заблокированные записи?

В 11-ом кажется таких возможностей ещё не было.
Кстати, где вы его откопали ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ASA 11.0.1 - Получить только незаблокированные данные - как?
    #36444493
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antand wrote:

> Если другое приложение хочет менять данные, то с READPAST аккуратнее

READPAST-а не было точно в 11-ом.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ASA 11.0.1 - Получить только незаблокированные данные - как?
    #36444507
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,

Читаю доку по 11
From.....
table-hint :
READPAST
| UPDLOCK
| XLOCK
| FASTFIRSTROW
| HOLDLOCK
| NOLOCK
| READCOMMITTED
| READUNCOMMITTED
| REPEATABLEREAD
| SERIALIZABLE
...
Рейтинг: 0 / 0
ASA 11.0.1 - Получить только незаблокированные данные - как?
    #36444553
v_smirnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
READPAST-а не было точно в 11-ом.


Сижу перечитываю доки ... эта штучка READPAST появилась аж не в 10-ке ...

antandЯ в смысле, что в данном случае по тому, что возвратит select c READPAST вряд ли можно будет правильно оценить и тем более менять данные по остаткам товаров на складе

Тут задача не оценить общий остаток - а из кучи свободного товара (1000 строк) списать (уменьшить остаток) для 5-10 строк.

Да - я понимаю риски с этим связанные - но пока альтернативы этому решению не вижу.
...
Рейтинг: 0 / 0
ASA 11.0.1 - Получить только незаблокированные данные - как?
    #36444615
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
v_smirnov,
Риск большой, нарваться на лок или дедлок, а главное кривого учета.
Альтернативное решение есть(с применением UPDLOCK или логической блокировки товара), но придется чтобы любой из клиентов работали только через это решение.
...
Рейтинг: 0 / 0
ASA 11.0.1 - Получить только незаблокированные данные - как?
    #36445432
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
v_smirnov wrote:

> Можно ли как-нибудь в select отсечь заблокированные записи?

В 11-ом кажется таких возможностей ещё не было.
Кстати, где вы его откопали ?
У TC не глупый ASE, а умная SA :)
...
Рейтинг: 0 / 0
ASA 11.0.1 - Получить только незаблокированные данные - как?
    #36445833
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl пишет:

> В 11-ом кажется таких возможностей ещё не было.
> Кстати, где вы его откопали ?
>
> У TC не глупый ASE, а умная SA :)

Ой, что ж это я, совсем не читаю нифига ...
Простите.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ASA 11.0.1 - Получить только незаблокированные данные - как?
    #36446511
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v_smirnovТут задача не оценить общий остаток - а из кучи свободного товара (1000 строк) списать (уменьшить остаток) для 5-10 строк.
Вам никто не мешает выставить опцию blocking_timeout например в 1 секунду, тогда будет сгенерирована ошибка, если делать UPDATE на заблокированную другой сессий запись, где ошибку можно перехватить и например проигнорировать.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SET TEMPORARY OPTION blocking_timeout =  1000 ;
BEGIN
  UPDATE table
  SET ...
  WHERE id =  1 ;
EXCEPTION
  MESSAGE 'Record lock' TO CLIENT;
  ROLLBACK;
END;
COMMIT;
...
Рейтинг: 0 / 0
ASA 11.0.1 - Получить только незаблокированные данные - как?
    #36446513
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
White Owl пишет:

> В 11-ом кажется таких возможностей ещё не было.
> Кстати, где вы его откопали ?
>
> У TC не глупый ASE, а умная SA :)

Ой, что ж это я, совсем не читаю нифига ...
Простите.

Ну с выходом ASA 12 еще больше путаницы станет :)
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA 11.0.1 - Получить только незаблокированные данные - как?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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