|
![]() |
#1 |
Участник
|
Перед транзакцией делайте trans.reread() и еще раз проверяйте условие селекта
т.е trans.reread(); if(trans.open) { ttsbegin; ... |
|
![]() |
#2 |
Участник
|
Это не решит проблемы.
Ведь всеравно два батча будут работать хуже чем один... В реальности перед апдейтом транзакции идет достаточно большая по времени функциональность, и при апдейти транзакции если возникает конфликт, то откатывается все назад. Наверное два всегда хуже чем один... Интересно, можно ли как то в селекте выбрать линии, которые точно не проапдейтятся другим батчем? |
|
![]() |
#3 |
Участник
|
выбор по четным и нечетным recId
![]() |
|
![]() |
#4 |
Участник
|
=) Смешно... но всетаки
Вобщем задача свелась к тому, что нужно в цикле проверить можнло ли залочить текущую линию , если да, то залочиеть ее , иначе продолжить цикл (т.е. перейти к следующей линии) Как это реализовать пока незнаю |
|
![]() |
#5 |
Участник
|
![]() Цитата:
X++: run() { Trans trans; Trans buffer; boolean reversed; ; try { select trans order by RecId asc where trans.open; while (trans) { buffer = Trans::find(trans.recid); if (!buffer.open) { if (!reversed) { reversed = true; select trans order by RecId desc where trans.open; continue; } else { break; } } ttsbegin; buffer.selectForUpdate(true); buffer.open = false; buffer.doUpdate(); ....... buffer.update() ttscommit; next trans; } } catch (Exception::Deadlock) { retry; } catch (Exception::UpdateConflict) { retry; } } |
|
![]() |
#6 |
Участник
|
TO Stich_MS: К сожалению когда один батч выполняет
PHP код:
То второй батч при выборе этой же линии, ждет пока снимется лок сделаный первым батчем. Т.е. получается вообще плохо. To Hyper: вот это подход я понимаю ![]() Пришлось сделать так: 1) Добавить на таблицу поле Blocked 2) Переделать метод так: PHP код:
Всех с Праздником! |
|
|
![]() |
||||
Тема | Ответов | |||
Невозможно выполнить команду языка определения данных в () | 8 | |||
Стандартный импорт данных. Обновление | 0 | |||
Распределенная база данных на основе View | 27 | |||
Введение в Аксапту | 0 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|