Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / снапшот транзакция для execute statement / 15 сообщений из 15, страница 1 из 1
25.06.2019, 13:15
    #39830310
vvvait
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снапшот транзакция для execute statement
FB 2.5.8 SS

есть длительная процедура по переносу данных из резервной БД в основную, выполняемая в snapshot транзакции, в конце которой в execute statement очищаются переданные таблицы. Параллельно ей, в эти таблицы данные добавляются. Могут ли удалиться данные добавленный после старта транзакции? (Судя по доке для execute statement может стартовать отдельная транзакция)
...
Рейтинг: 0 / 0
25.06.2019, 13:23
    #39830318
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снапшот транзакция для execute statement
25.06.2019 13:15, vvvait пишет:
> для execute statement может стартовать отдельная транзакция

только если ты сам этого захочешь
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.06.2019, 13:25
    #39830320
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снапшот транзакция для execute statement
vvvait,


EXECUTE STATEMENT
Насколько я понимаю написанное

Description: Traditionally, the executed SQL statement always ran within the current transaction, and this is still the default. WITH AUTONOMOUS TRANSACTION causes a separate transaction to be started, with the same parameters as the current transaction. It will be committed if the statement runs to completion without errors and rolled back otherwise. WITH COMMON TRANSACTION uses the current transaction if possible. If the statement must run in a separate connection, an already started transaction within that connection is used, if available. Otherwise, a new transaction is started with the same parameters as the current transaction. Any new transactions started under the “COMMON” regime are committed or rolled back with the current transaction.

то волноваться не стоит
...
Рейтинг: 0 / 0
25.06.2019, 13:28
    #39830324
vvvait
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снапшот транзакция для execute statement
по умолчанию какая транзакция используется ?

WITH COMMON TRANSACTION uses the current transaction if possible
...
Рейтинг: 0 / 0
25.06.2019, 14:04
    #39830352
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снапшот транзакция для execute statement
vvvait,

читай doc\sql.extensions\README.execute_statement2
...
Рейтинг: 0 / 0
25.06.2019, 14:56
    #39830373
vvvait
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снапшот транзакция для execute statement
hvlad,

a) started new transaction with the same parameters as current transaction, or
b) used already started transaction in this connection, or
c) used current transaction if current connection is used.

- by default COMMON TRANSACTION is used

Вопрос остаётся. если для выполнения очистки стартует новая транзакция, увидит ли она добавленные в других коннектах записи?
...
Рейтинг: 0 / 0
25.06.2019, 15:10
    #39830378
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снапшот транзакция для execute statement
vvvaitесли для выполнения очистки стартует новая транзакция, увидит ли она добавленные в других коннектах записи?Если это тр-ция snapshot, то конечно же не увидит.

Проверить самому не легче\быстрее, чем тут очевидных ответов ждать ?
...
Рейтинг: 0 / 0
25.06.2019, 16:59
    #39830429
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снапшот транзакция для execute statement
vvvait,

Traditionally, the executed SQL statement always ran within the current transaction, and this is still the default.

Не пиши никакого with (ни common, ни autonomous), и будет эта же самая транзакция.
...
Рейтинг: 0 / 0
25.06.2019, 17:03
    #39830432
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снапшот транзакция для execute statement
vvvait,

мне интересно, зачем читать по английски, если исходно документация на русском языке?
http://www.ibase.ru/files/firebird/langref25rus/index.html#d0e23199
...
Рейтинг: 0 / 0
25.06.2019, 17:36
    #39830448
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снапшот транзакция для execute statement
kdv,

Ну так гугл на поиск "execute statement firebird" первые же ссылки на firebirdsql.org
...
Рейтинг: 0 / 0
25.06.2019, 17:43
    #39830451
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снапшот транзакция для execute statement
25.06.2019 17:36, m7m пишет:
> Ну так гугл на поиск...

а ты не пользуй сионистский гугель.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.06.2019, 17:54
    #39830455
vvvait
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снапшот транзакция для execute statement
С причиной потерянных записей я разобрался, оказалось что один "хороший" человек использовал TpFIBTransaction вместо TFIBTransaction как везде. У неё снапшот устанавливается через TPBMode, а не через TRParams, поэтому вместо снапшота был read_commited. Пришлось в процедуру добавить проверку, что транзакция snapshot.

С предложением WITH COMMON TRANSACTION по возможности используется текущая транзакция.

тут не понятно, при каких условиях будет запущена новая транзакция, и если она будет запущена на 10 минут позже основной, будет ли она также не видеть добавленные записи.
...
Рейтинг: 0 / 0
25.06.2019, 18:42
    #39830472
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снапшот транзакция для execute statement
vvvait,

причём тут раньше-позже? Это предложение относится скорее всего к специальным операторам и EXTERNAL DATA SOURCE. При запуске обычных DML с текущей БД и под текущим пользователем без предложения WITH AUTONOMOUS TRANSACTION всегда будет выполняться в текущей транзакции.
...
Рейтинг: 0 / 0
25.06.2019, 18:46
    #39830474
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снапшот транзакция для execute statement
А "назачем там нужен execute statement" так никто и не спросит?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.06.2019, 18:48
    #39830476
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снапшот транзакция для execute statement
25.06.2019 18:46, Dimitry Sibiryakov пишет:
> А "назачем там нужен execute statement" так никто и не спросит?..

подозреваю "обобщенный решатель задач", с динамическим формированием SQL
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / снапшот транзакция для execute statement / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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