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

Возник спор - вложенные транзакции (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
26.09.2007, 22:45
    #34829686
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nested transaction vs savepoint
мне кажется ни то ни другое

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

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


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

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

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

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

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


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

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


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


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

если в rollback указано, что откатываться надо до savepoint-а
...
Рейтинг: 0 / 0
27.09.2007, 09:32
    #34830039
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nested transaction vs savepoint
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
27.09.2007, 09:43
    #34830054
Dmitry Arefiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nested transaction vs savepoint
Пьяный ЛохACID-ное durability требует, чтобы изменения, прибитые внутренним commit'ом были навсегда
Это про транзакции. А ACID для вложенных транзакций где-то описывается ?
Пьяный ЛохМожно модифицировать понятие durability, внеся туда понятие "области видимости".
Тогда это становится savepoint'ом, который nested transaction.
Пьяный ЛохВ простых случаях поведение и использование - идентично, в более сложных - нет.
Да, вот и хотелось бы увидить хотя бы один случай, где они разные ...
...
Рейтинг: 0 / 0
27.09.2007, 09:46
    #34830063
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nested transaction vs savepoint
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
27.09.2007, 09:49
    #34830073
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nested transaction vs savepoint
Dmitry Arefiev
Да, вот и хотелось бы увидить хотя бы один случай, где они разные ...

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

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


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

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

2 teras

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

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

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

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

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


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

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

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


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