Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / SavePoints и StoredProcedure / 12 сообщений из 12, страница 1 из 1
15.06.2017, 11:33
    #39472061
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SavePoints и StoredProcedure
Почитал тут про SavePoints и захотелось уточнить:

Я правильно понял что если в какой-то StoredProcedure возникает исключение, то все изменения, сделанные данной процедурой (не упоминаем автономные транзакции), будут откачены автоматически и нет разницы делать ли транзакции Commit или Rollback (если не вносились другие изменения)?
...
Рейтинг: 0 / 0
15.06.2017, 12:03
    #39472116
fraks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SavePoints и StoredProcedure
alekcvp,

Там еще влияет наличие suspend (до suspend и после), и кажись вложенность процедур...
IMHO: Не хочешь искать проблем - используй rollback.
...
Рейтинг: 0 / 0
15.06.2017, 13:17
    #39472225
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SavePoints и StoredProcedure
fraks,

Ясно. Я просто наткнулся на фразу:
http://www.ibase.ru/pslock/ В случае конфликта выполняется откат снапшота (если запись выполняется посредством нескольких SQL-операторов посредством rollback, если одним – commit, в базу всё равно ничего не записано, а rollback способствует росту разрыва OIT/OAT) и цикл повторяется.
Из которой ненавязчиво следует вывод, что Rollback по каждому поводу делать нежелательно, а лучше где можно использовать Commit.
...
Рейтинг: 0 / 0
15.06.2017, 13:26
    #39472233
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SavePoints и StoredProcedure
alekcvpчто Rollback по каждому поводу делать нежелательно, а лучше где можно использовать Commit.
сервер все равно сделает коммит вместо роллбэка,
- если в транзакции никаких изменений данных не было
- если изменения были, но "мало" (где-то до 80 тысяч) - он их откатит по undo log
- если undo log выключен.

http://www.ibase.ru/mga/

Так что если нужен роллбэк - лучше делать роллбэк.
...
Рейтинг: 0 / 0
15.06.2017, 13:35
    #39472243
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SavePoints и StoredProcedure
kdvсервер все равно сделает коммит вместо роллбэка,
- если в транзакции никаких изменений данных не было
- если изменения были, но "мало" (где-то до 80 тысяч) - он их откатит по undo log
- если undo log выключен.

В последнем случае таки будет rollback.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.06.2017, 13:37
    #39472247
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SavePoints и StoredProcedure
kdvсервер все равно сделает коммит вместо роллбэка,
...
- если undo log выключен.???
1. undo log невозможно выключить
- можно отключить создание сейвпойнта уровня тр-ции, не больше и не меньше
...
Рейтинг: 0 / 0
15.06.2017, 13:39
    #39472251
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SavePoints и StoredProcedure
alekcvpвывод, что Rollback по каждому поводу делать нежелательно, а лучше где можно использовать CommitБред чистой воды.
Что делать - rollback или commit, должно определяться логикой приложения и ни чем иным.
Только логикой, никакие "тайные знания" о внутренних механизмах СУБД тут не имеют право вмешиваться.
...
Рейтинг: 0 / 0
15.06.2017, 13:40
    #39472254
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SavePoints и StoredProcedure
15.06.2017 13:39, hvlad пишет:
> Что делать - rollback или commit, должно определяться логикой приложения и ни чем иным.
> Только логикой, никакие "тайные знания" о внутренних механизмах СУБД тут не имеют право вмешиваться.

+1
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.06.2017, 13:53
    #39472268
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SavePoints и StoredProcedure
hvlad,

я имел в виду isc_tpb_no_auto_undo (и помню, что целиком undo-лог не отключается).
...
Рейтинг: 0 / 0
15.06.2017, 15:01
    #39472348
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SavePoints и StoredProcedure
kdvhvlad,

я имел в виду isc_tpb_no_auto_undo (и помню, что целиком undo-лог не отключается).Я знаю, что ты имел в виду :)
Но я совершенно не согласен с тем, как ты это написал.
Ибо разные люди это читают и потом ссылаются
...
Рейтинг: 0 / 0
15.06.2017, 15:17
    #39472361
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SavePoints и StoredProcedure
hvlad,

подробно было в материалах семинара по транзакциям, в Москве в 2014 году. Но семинар был платный, поэтому материалы были доступны только участникам. Могу по мотивам твоего доклада:

1. Каждый запрос имеет собственную точку сохранения (savepoint), которая содержит данные, необходимые для отмены изменений запроса (undo data)
2. точки сохранения могут быть групповыми (begin-end), управляемыми в psql словом savepoint, и у транзакций
3. в транзакции блоки undo data при успешном выполнении операторов объединяются в общий undo log транзакции. Именно так возможна отмена всех действий транзакции по rollback (и последующее превращение rollback в commit).
4. no_auto_undo не отключает undo log у транзакции, но отключает "склеивание" undo data от разных операторов. В результате rollback будет настоящим rollback-ом.

Как итог - no_auto_undo можно выключать для экономии памяти (и некоторого ускорения) при массовой заливке или обновлении данных (когда в транзакции много операторов).

И да - то что делает сервер внутри не должно быть поводом для каких-то специфических действий снаружи.

p.s. я использовал no_auto_undo разве что для теста, чтобы без изменений в транзакции был настоящий rollback по rollback - я проверял момент срабатывания авто-свипа в ИБ и ФБ.
...
Рейтинг: 0 / 0
15.06.2017, 16:06
    #39472434
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SavePoints и StoredProcedure
kdv4. no_auto_undo не отключает undo log у транзакции, но отключает "склеивание" undo data от
разных операторов.

С точностью до наоборот: undo log операторов по-прежнему склеиваются, но результат не
сливается с transaction undo log по одной простой причине, что тот вообще не создаётся.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / SavePoints и StoredProcedure / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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