powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / nested transaction vs savepoint
25 сообщений из 155, страница 1 из 7
nested transaction vs savepoint
    #34829473
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет Всем

Возник спор - вложенные транзакции (nested transaction) и точки сохранения (savepoint) это:
1) одно и то же, но названное по разному;
2) или существуют принципиальные факты различий в их поведении.
Интересует больше концепция, но будут интересны и реализации.

Что скажете ?

PS: Я за (1).

Удачи,
Дмитрий

--
AnyDAC ( www.da-soft.com ) - компоненты для доступа к Oracle, MySQL, MSSQL,
MSAccess, IBM DB2, Advantage DS, Sybase ASA, DbExpress, ODBC .
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34829686
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне кажется ни то ни другое

если вы пишите вложенные транзакции, то при откатывании в любом месте откатыватся будет всё, независимо от того, что какие-то вложенные транзакции завершились

save tran фиксирует текущее состояние и откатываться тогда будет до него


или Вы другое имели в виду?
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34829735
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Dmitry Arefiev : одно и то же.

SergSupersave tran фиксирует текущее состояние и откатываться тогда будет до негоЭто в где ???
Транзакция или вся выполняется, или вся не выполняется. Всё остальное - не транзакция
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34829762
Пьяный Лох
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Dmitry Arefiev
Это принципиально разные вещи.
Основное принципиальное отличие в том, что вложенные транзакции в классическом понимании транзакций - вообще невозможны.

Если есть одна транзакция (внешняя), внутри которой запускается еще одна (внутренняя), то ACID-ное durability требует, чтобы изменения, прибитые внутренним commit'ом были навсегда. Но тогда непонятно что должен делать случившийся позже внешний rollback, он ни оставить внутренние изменения не может (иначе это не rollback), ни откатить (иначе лесом пошло внутреннее durability).

Можно модифицировать понятие durability, внеся туда понятие "области видимости". Так, например, сделано в MS Access (интерсно, где еще?).
Можно ввести суррогатные сейвпоинты.
В простых случаях поведение и использование - идентично, в более сложных - нет.
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34829771
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пьяный Лох2 Dmitry Arefiev
Это принципиально разные вещи.
Основное принципиальное отличие в том, что вложенные транзакции в классическом понимании транзакций - вообще невозможны.Да, конечно.
Я имел в виду практическую сторону вопроса, ибо некоторые производители называют сейвпойнты вложенными тр-циями
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34829931
Фотография GoldSquid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вложенных транзакций не бывает!

Код: plaintext
1.
-----------
 Dad el rublo! 
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34829949
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad SergSupersave tran фиксирует текущее состояние и откатываться тогда будет до негоЭто в где ???


Это в Oracle :) Ну и наверное там где ЕСТЬ savepoint-ы
Так что таки НЕТ это не одно и то-же
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34829954
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GoldSquidВложенных транзакций не бывает!

Код: plaintext
1.
-----------
 Dad el rublo! 


бывают
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34829958
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) hvlad SergSupersave tran фиксирует текущее состояние и откатываться тогда будет до негоЭто в где ???


Это в Oracle :) Ну и наверное там где ЕСТЬ savepoint-ы
Так что таки НЕТ это не одно и то-же

если в rollback указано, что откатываться надо до savepoint-а
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34830039
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) GoldSquidВложенных транзакций не бывает!

Код: plaintext
1.
-----------
 Dad el rublo! 


бывают

Ну, а если почитать:

Committing inner transactions is ignored by Microsoft® SQL Server™. The transaction is either committed or rolled back based on the action taken at the end of the outermost transaction. If the outer transaction is committed, the inner nested transactions are also committed. If the outer transaction is rolled back, then all inner transactions are also rolled back, regardless of whether or not the inner transactions were individually committed.

;)
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34830054
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пьяный ЛохACID-ное durability требует, чтобы изменения, прибитые внутренним commit'ом были навсегда
Это про транзакции. А ACID для вложенных транзакций где-то описывается ?
Пьяный ЛохМожно модифицировать понятие durability, внеся туда понятие "области видимости".
Тогда это становится savepoint'ом, который nested transaction.
Пьяный ЛохВ простых случаях поведение и использование - идентично, в более сложных - нет.
Да, вот и хотелось бы увидить хотя бы один случай, где они разные ...
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34830063
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin Gluk (Kazan) GoldSquidВложенных транзакций не бывает!

Код: plaintext
1.
-----------
 Dad el rublo! 


бывают

Ну, а если почитать:

Committing inner transactions is ignored by Microsoft® SQL Server™. The transaction is either committed or rolled back based on the action taken at the end of the outermost transaction. If the outer transaction is committed, the inner nested transactions are also committed. If the outer transaction is rolled back, then all inner transactions are also rolled back, regardless of whether or not the inner transactions were individually committed.

;)

Они НАЗЫВАЮТСЯ вложенными транзакциями ;)
Для Microsoft вообще характерно называть вещи не своими именами (из самыхблагих маркетинговых соображений разумеется)
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34830073
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Arefiev
Да, вот и хотелось бы увидить хотя бы один случай, где они разные ...

В Oracle savepoint неявно ставится перед каждым DML-оператором, что позволяет откатить этот оператор при возникновении ошибки. Попробуйте сделять то-же с помощью "вложенных" транзакций.

Кстати, в Oracle есть еще автономные транзакции, которые тоже не имеют никакого отношения к "вложенным"
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34830089
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Попробуйте сделять то-же с помощью "вложенных" транзакций.
И в чем проблема ?
Gluk (Kazan)Кстати, в Oracle есть еще автономные транзакции, которые тоже не имеют никакого отношения к "вложенным"
Автономные транзакции скорее ближе к множественным транзакциям Interbase. Т.е. они скорее всего параллельные а не вложенные :)
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34830131
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Arefiev Gluk (Kazan)Попробуйте сделять то-же с помощью "вложенных" транзакций.
И в чем проблема ?


В том чтобы откатить деятельность оператора, а не всю транзакцию
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34830182
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)В том чтобы откатить деятельность оператора, а не всю транзакцию
Ну так откатывайте себе на здоровье, используя хоть вложенные транзакции, хоть точки сохранения. Только обрамляя каждый оператор блоком обработки исключительных ситуаций.
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34830189
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насколько я понимаю, разница между savepoint и nested transactions заключается в том, что вложенные транзакции позволяют образуют независимый собственный домен блокировок, в то время, как точки сохранения используют один общий домен - родительскую транзакцию.
Кстати, существуют и такой подход, когда текстуально вложенная транзакция подтверждается независимо от статуса завершения объемлющей. На практике они используются практически в любой БД, применяющей UNDO/REDO протоколирование. В ARIES они называется nested top actions (NTA).
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34830226
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Arefiev Gluk (Kazan)В том чтобы откатить деятельность оператора, а не всю транзакцию
Ну так откатывайте себе на здоровье, используя хоть вложенные транзакции, хоть точки сохранения. Только обрамляя каждый оператор блоком обработки исключительных ситуаций.

В MS SQL rollback откатит всю транзакцию, а не только вложенную
в этом и разница

2 teras

Что есть домен блокировок ? В MS SQL 2000 вложенный Begin Transaction не более чем синтаксический сахар
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34830339
Пьяный Лох
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Dmitry Arefiev
Это про транзакции. А ACID для вложенных транзакций где-то описывается ?
Нигде не описывается. Потому что не бывает ACID для вложенных транзакций. Конкретно - не бывает D. Бывает только "модифицированное D", т.е. для внешней транзакции закомиченные (внутренним комитом) изменения вполне дюрабильны, а для всего остального мира их еще не существует.

Тогда это становится savepoint'ом, который nested transaction.
Не становится.

Да, вот и хотелось бы увидить хотя бы один случай, где они разные ...
Напишите с использованием сейвпойнтов процедурину, которая обеспечивает атомарность, констистентность и изолированность (нужного уровня) для своих операций как при обычном вызове этой процедуры, так и при вызове внутри другой транзакции (в т.ч. с другим уровнем изоляции). И чтобы откат этой процедуры (в случае "вложенного" её вызова) не вызывал отката родительской транзакции, о которой вообще-то неизвестно ничего.
Когда напишете - тогда приходите.
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34830472
Пьяный Лох
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Dmitry Arefiev
З.Ы. Как было правильно сказано, сейвпоинты - это синтаксический сахар. Т.е. вроде как нельзя вложенные транзакции, но очччень хочеццо уметь "откатиться на чуть-чуть", причем сделать это более удобным способом, нежели выполнением обратных операторов. Всё, кроме как для "откатов на чуть-чуть" сейвпоинты больше ни для чего нужны быть не могут.
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34830481
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пьяный Лох2 Dmitry Arefiev
З.Ы. Как было правильно сказано, сейвпоинты - это синтаксический сахар. Т.е. вроде как нельзя вложенные транзакции, но очччень хочеццо уметь "откатиться на чуть-чуть", причем сделать это более удобным способом, нежели выполнением обратных операторов. Всё, кроме как для "откатов на чуть-чуть" сейвпоинты больше ни для чего нужны быть не могут.

Не надо с больной головы на здоровую. Я говорил про вложенные транзакции. savepoint-ы сахар вполне себе семантический и на роль вложенных транзакций никогда не претендовавший. У него типа свои задачи
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34830489
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) Dmitry Arefiev
Да, вот и хотелось бы увидить хотя бы один случай, где они разные ...

В Oracle savepoint неявно ставится перед каждым DML-оператором, что позволяет откатить этот оператор при возникновении ошибки. Попробуйте сделять то-же с помощью "вложенных" транзакций.А в где они не ставятся ? :) С помощью "вложенных" это попробовать не получится, ибо их не бывает
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34830502
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) hvlad SergSupersave tran фиксирует текущее состояние и откатываться тогда будет до негоЭто в где ???


Это в Oracle :) Ну и наверное там где ЕСТЬ savepoint-ы
Так что таки НЕТ это не одно и то-жеCommit savepoint'а это просто указание движку забыть об этом savepoint'е. Я сильно сомневаюсь, что в Оракле это не так.
Впрочем ссылка меня может переубедить и сильно удивить (обычно у Оракла здравый смысл таки присутствует)
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34830546
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladCommit savepoint'а это просто указание движку забыть об этом savepoint'е. Я сильно сомневаюсь, что в Оракле это не так.
Впрочем ссылка меня может переубедить и сильно удивить (обычно у Оракла здравый смысл таки присутствует)

В Oracle savepoint-у НЕЛЬЗЯ делать commit, только rollback
если было бы можно - тогда действительно был бы маразм
...
Рейтинг: 0 / 0
nested transaction vs savepoint
    #34830623
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) hvladCommit savepoint'а это просто указание движку забыть об этом savepoint'е. Я сильно сомневаюсь, что в Оракле это не так.
Впрочем ссылка меня может переубедить и сильно удивить (обычно у Оракла здравый смысл таки присутствует)

В Oracle savepoint-у НЕЛЬЗЯ делать commit, только rollback
если было бы можно - тогда действительно был бы маразмСлава Ларри, я в него верил :)
...
Рейтинг: 0 / 0
25 сообщений из 155, страница 1 из 7
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / nested transaction vs savepoint
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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