LINUX.ORG.RU

Транзакционная модель в Oracle и в Derby


0

0

Сценарий:
1. Открываем транзакцию (команды UPDATE или INSERT)
2. Из другой сессии запускаем SELECT * FROM... на ту же таблицу

В Oracle 10.2.0.1.0 будут получены старые данные. В Derby начнётся ожидание окончания транзакции. Может ли Derby вести себя так же, как Oracle? Как вообще называется такая транзакционная модель?

★★★★★
Ответ на: комментарий от Eshkin_kot

Да, скорее даже мультиверсионная.

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от Legioner

> Делать версионность руками.

Было бы интересно посмотреть, как вы это сделаете. Я думаю, что лучше заменить Derby на HyperSQL 2.0, где MVCC реализовано.

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от bbk123

Вместо UPDATE писать INSERT, в котором вставлять копию старых данных с внесёнными изменениями, а на старой записи ставить какой-нибудь флаг, помечающий её как устаревшую. Это если транзакции должны быть долгими. Если нет, то просто сократить время лока до минимума (таблица лочится только на время update-а).

Ну если есть возможность перейти на версионную БД, то наверное проще так и сделать, хотя там свои проблемы, когда несколько транзакций одновременно изменяют одну запись.

Legioner ★★★★★
()
Ответ на: комментарий от tnodir

Реализация MVCC в H2 является эксперементальной и подвержена определённым ограничениям.

bbk123 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.