powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Существуют ли в IB/FB вложенные транзакции?
15 сообщений из 15, страница 1 из 1
Существуют ли в IB/FB вложенные транзакции?
    #32402851
Karioth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Subj.
+
Как их реализовать в Delphi с помощью IBX например?
А то у меня получается много транзакций, но параллельных, а не вложенных.
...
Рейтинг: 0 / 0
Существуют ли в IB/FB вложенные транзакции?
    #32402862
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй стандартную для FIB+ схему: одна (длинная) читающая (write,nowait,rec_version,read_committed), и короткая пишущая - на момент добавления/изменения/удаления (быстро создал, изменил данный, уничтожил).

А вложенных транзакций не бывает. (Может, помогут Savepoint's в FB 1.5?)
...
Рейтинг: 0 / 0
Существуют ли в IB/FB вложенные транзакции?
    #32402880
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иногда вложенные транзакции можно сэмулировать исключениями и блоком WHEN... В общем смотря зачем надо...

А вобще-то всякие штуки типа точек сохранения, двухфазных транзакций и исключений есть нарушение правила АСИД для транзакции, т.е. всё это зло
...
Рейтинг: 0 / 0
Существуют ли в IB/FB вложенные транзакции?
    #32402911
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В FB1.5 вроде есть savepointы.
Точно как юзать незнаю, есть в документации поставляемой в дистрибутиве(это я так громко о текстовых файлах :-)
...
Рейтинг: 0 / 0
Существуют ли в IB/FB вложенные транзакции?
    #32402916
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АСИД - это четыре правила ;-) Какие именно, чем и как нарушены? А то так можно много до чего договориться...
...
Рейтинг: 0 / 0
Существуют ли в IB/FB вложенные транзакции?
    #32402919
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2alex_k

А ReleaseNotes.pdf - это текстовый файл или не документация? ;-)
...
Рейтинг: 0 / 0
Существуют ли в IB/FB вложенные транзакции?
    #32402945
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот читаем к примеру:
авторОпределение 1. Транзакция - это последовательность операторов манипулирования данными, выполняющаяся как единое целое (все или ничего) и переводящая базу данных из одного целостного состояния в другое целостное состояние.

Транзакция обладает четырьмя важными свойствами, известными как свойства АСИД:

(А) Атомарность. Транзакция выполняется как атомарная операция - либо выполняется вся транзакция целиком, либо она целиком не выполняется.
(С) Согласованность. Транзакция переводит базу данных из одного согласованного (целостного) состояния в другое согласованное (целостное) состояние. Внутри транзакции согласованность базы данных может нарушаться.
(И) Изоляция. Транзакции разных пользователей не должны мешать друг другу (например, как если бы они выполнялись строго по очереди).
(Д) Долговечность. Если транзакция выполнена, то результаты ее работы должны сохраниться в базе данных, даже если в следующий момент произойдет сбой системы.

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

По теме: сами по себе вложенные транзакции, точки сохранения и исключения противоречат определению транзакции, т.к. при использовании этих средств есть возможность подтвердить не всю транзакцию, а её часть. Также вложенная транзакция до своего завершения будет препятствовать завершению "выложенной" (не знаю как правильно её назвать) транзакции нарушая требование изоляции.

В общем мое мнение такое: если есть возможность, то лучше обойтись без вложенных транзакций чтобы себе геммороя не поиметь потом.
...
Рейтинг: 0 / 0
Существуют ли в IB/FB вложенные транзакции?
    #32402993
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Вложенные транзакции" - наверное, хочешь всякие там откаты на любой уровень делать, да?

Брось эти глупости. Юзай FIB+, и все у тебя будет мягкое и шелковистое.
...
Рейтинг: 0 / 0
Существуют ли в IB/FB вложенные транзакции?
    #32402995
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПо теме: сами по себе вложенные транзакции, точки сохранения и исключения противоречат определению транзакции, т.к. при использовании этих средств есть возможность подтвердить не всю транзакцию, а её часть. Также вложенная транзакция до своего завершения будет препятствовать завершению "выложенной" (не знаю как правильно её назвать) транзакции нарушая требование изоляции.


Вложенные транзакции в том виде, в каком я их себе представляю (и в каком ты их выше описываешь) я еще нигде на практике не встречал ;-) И слава богу. Часто сейвпойнты называют вложенными транзакциями, но они никак не влияют на атомарность или изолированность транзакции и никак ей не мешают.

Сейвпойнты и исключения нарушают изначальный алгоритм выполнения операций транзакции. Но они специально предназначены для поддержания целостности. Т.е. даже если ты поменял логику транзакции в процессе обработки какой-то ошибки, это еще не означает, что транзакция от этого потеряла свою целостность. Оба этих механизма работают в контексте транзакции и являются ее неотъемлемой частью.

Да и не стоит здесь привлекать исключения вообще. Иначе мы придем к выводу, что деление на нуль также нарушает АСИД, так как я могу потом сделать коммит и подтвержу транзакцию частично ;-) А также нарушение первичного ключа и т.д. и т.п.

автор
В общем мое мнение такое: если есть возможность, то лучше обойтись без вложенных транзакций чтобы себе геммороя не поиметь потом.


Абсолютно согласен.
...
Рейтинг: 0 / 0
Существуют ли в IB/FB вложенные транзакции?
    #32403432
Karioth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну народ, вы конкретно неправы.

Работал в Оракле, есть там вложенные транзакции, мощная штука.

Вот допустим такая задача. Работаю с документами из делфи.
Нужно провести сложную операцию, состоящую из нескольких более мелких.
Эти самые более мелкие тоже составные (по нескольку операторов SQL).

Если в ходе проведения мелкой операции происходит ошибка, ее нужно откатить, попросить пользователя подкорректировать задачу (или отменить), и запустить эту мелкую операцию снова (во вложенной транзакции).
Таких мелких операций несколько, каждая представляет собой отдельную логическую подзадачу, которая может использоваться отдельно.
Если пользователь отменяет всю задачу, сложная операция отменяется с откатом внешней транзакции. При нормальном проходе мелких операций внешняя транзакция коммитится.

Вложенные транзакции АСИДу не противоречат нисколько и это удобная штука. А вот симуляция исключениями - это и есть самый гемор. Сейвпоинты мне помогли бы, но версия не позволяет, а за использование FB1.5RC8 заказчик просто повесит.

dimitrТакже вложенная транзакция до своего завершения будет препятствовать завершению "выложенной" (не знаю как правильно её назвать) транзакции нарушая требование изоляции.
Вложенная транзакция всегда должна завершаться первой. В Оракле - это представляет собой стек. Если ты вызываешь start transaction, и начинаешь вложенную транзакцию, то первым вызовом commit (или rollback) подтверждаешь (или откатываешь) вложенную, а вторым вызовом commit или rollback - уже внешнюю.

Между прочим в доке по ибейзу 5-му (одна из pdf-ок) написано: сервер поддерживает вложенные транзакции до 5 (или 6, не помню) уровней. Конкретно в какой доке и где - не помню. Мне интересно, как это реализовать в IBX или в делфи.
...
Рейтинг: 0 / 0
Существуют ли в IB/FB вложенные транзакции?
    #32404043
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторРаботал в Оракле, есть там вложенные транзакции, мощная штука.

Вот допустим такая задача. Работаю с документами из делфи.
Нужно провести сложную операцию, состоящую из нескольких более мелких.
Эти самые более мелкие тоже составные (по нескольку операторов SQL).

Если в ходе проведения мелкой операции происходит ошибка, ее нужно откатить, попросить пользователя подкорректировать задачу (или отменить), и запустить эту мелкую операцию снова (во вложенной транзакции).
Таких мелких операций несколько, каждая представляет собой отдельную логическую подзадачу, которая может использоваться отдельно.
Если пользователь отменяет всю задачу, сложная операция отменяется с откатом внешней транзакции. При нормальном проходе мелких операций внешняя транзакция коммитится.


И чем семантически это отличается от тех же сейвпойнтов, которые тоже есть в Оракле? Кроме отсутствия команды commit для сейвпойнта? Или Оракл позволяет использовать различные уровни изоляции для вложенных транзакций?

авторМежду прочим в доке по ибейзу 5-му (одна из pdf-ок) написано: сервер поддерживает вложенные транзакции до 5 (или 6, не помню) уровней. Конкретно в какой доке и где - не помню. Мне интересно, как это реализовать в IBX или в делфи.

Дай конкретную ссылку (книга и страница), пожалуйста. IB/FB не имеет вложенных транзакций ни в каком виде, так что наверняка там имелось ввиду что-то другое.
...
Рейтинг: 0 / 0
Существуют ли в IB/FB вложенные транзакции?
    #32404175
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Существуют ли в IB/FB вложенные транзакции?
    #32404194
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Gold

Это кому ответ? ;-) И на что?
...
Рейтинг: 0 / 0
Существуют ли в IB/FB вложенные транзакции?
    #32404206
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А это как в мультике:
- Это мне? А за что?????
- А просто так!!!

Для общего развития, поскольку я так понял что ДК её только сегодня выложил и про неё ещё мало кто знает :-)
...
Рейтинг: 0 / 0
Существуют ли в IB/FB вложенные транзакции?
    #32404235
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой, держите меня
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Существуют ли в IB/FB вложенные транзакции?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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