|
Дублирование строчек при чтении из таблицы через jConnect 7.0
|
|||
---|---|---|---|
#18+
Доброго времени суток! Есть программа на java (агент ODI), которая выбирает строчки из большой таблицы (select * from table1), и поштучно вставляет их в другую таблицу (на Oracle, но это неважно). Возникает ситуация, когда одни и те же строчки выбираются повторно. Есть подозрение, что такое возникает, когда выбираемые селектом строки меняются другими пользователями во время выборки. Т.е. программа считывает строчку, еще кучу. Потом строка меняется, и он возвращается в SELECT-е еще раз. Кто-нибуть сталкивался с таким поведением и как это победить? Sybase ASE 15.0.2, jConnect 7.00(Build 26502), JDK 6.0.0.18 (64 bit), AIX 5.3.12 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2011, 15:14 |
|
Дублирование строчек при чтении из таблицы через jConnect 7.0
|
|||
---|---|---|---|
#18+
Включить как минимум первый уровень изоляции. Либо добавить в select опцию at isolation: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc00938.1502/html/locking/locking105.htm ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2011, 18:00 |
|
Дублирование строчек при чтении из таблицы через jConnect 7.0
|
|||
---|---|---|---|
#18+
On 13.01.2011 18:00, White Owl wrote: > Включить как минимум первый уровень изоляции. > Либо добавить в select опцию at isolation: Первый не поможет. Это по идее фантомы, и они устраняются только на самом высшем уровне изоляции (SERIALIZABLE). Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2011, 09:34 |
|
Дублирование строчек при чтении из таблицы через jConnect 7.0
|
|||
---|---|---|---|
#18+
On 13.01.2011 15:14, jubba2001 wrote: > Кто-нибуть сталкивался с таким поведением и как это победить? Такое МОЖЕТ БЫТЬ. Давай Таблицы, запрос, уровень изоляции транзакции. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2011, 09:37 |
|
Дублирование строчек при чтении из таблицы через jConnect 7.0
|
|||
---|---|---|---|
#18+
Таки да, на уровнях изоляции транзакций 0 и 1, при изменении строки, она повторно попадает в результат селекта. Отсюда были и дубли. Можно победить использованием at isolation 2|3, но при больших объемах возникает огромное кол-во блокировок. Когда я это понял, вернулся на уровень 1, и использовал это поведение как фичу: добавил TIMESTAMP записи, и выбираю только последние. Всем спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2011, 19:50 |
|
|
start [/forum/search_topic.php?author=reader___&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 391ms |
total: | 549ms |
0 / 0 |