powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Управление транзакциями в EXECUTE STATEMENT ON EXTERNAL
16 сообщений из 16, страница 1 из 1
Управление транзакциями в EXECUTE STATEMENT ON EXTERNAL
    #39783243
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обращаюсь к другой базе на том же сервере из хранимой процедуры через

EXECUTE STATEMENT 'select ...' ON EXTERNAL 'db' WITH COMMON TRANSACTION

Хочется, чтобы эта common транзакция была READ_ONLY, да и другими её параметрами поиграть.

Как это можно сделать? Если не средствами языка, может, какими настройками?

Firebird 3.0 SuperServer
...
Рейтинг: 0 / 0
Управление транзакциями в EXECUTE STATEMENT ON EXTERNAL
    #39783254
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyanskyКак это можно сделать?

Она потому и называется COMMON, что является частью транзакции в которой ты выполняешь
этот запрос. Соответственно её параметры - параметры транзакции, которые ты задаёшь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Управление транзакциями в EXECUTE STATEMENT ON EXTERNAL
    #39783260
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

ну пока что и параметрами автономных транзакций даже для ON EXTERNAL нельзя играться
...
Рейтинг: 0 / 0
Управление транзакциями в EXECUTE STATEMENT ON EXTERNAL
    #39783290
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovОна потому и называется COMMON, что является частью транзакции в которой ты выполняешь
этот запрос. Соответственно её параметры - параметры транзакции, которые ты задаёшь.

Логику вижу, но не понимаю. Да, фиксация или откат текущей и вызываемой тразакций будут сделаны совместно, поэтому их вместе можно даже назвать одной общей транзакцией на двух отдельных базах. Но почему бы не позволить вызываемой транзакции к другой базе быть, например read_only, не понимаю.
...
Рейтинг: 0 / 0
Управление транзакциями в EXECUTE STATEMENT ON EXTERNAL
    #39783296
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyanskyНо почему бы не позволить вызываемой транзакции к другой базе быть, например read_only, не
понимаю.

А зачем? Какой в этом практический смысл?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Управление транзакциями в EXECUTE STATEMENT ON EXTERNAL
    #40002402
bsv9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovА зачем? Какой в этом практический смысл?
Например, имеем две базы: OLAP (хранилище) и OLTP (транзакционная). Хранимая процедура работает в базе OLAP, ей нужна пишущая транзакция и она работает очень долго. Кроме того, ей нужны данные из OLTP-базы. Это заставляет нас держать длинную пишущую транзакцию в OLTP-базе, для которой такие длинные транзакции категорически противопоказаны.

Поэтому возможность запускать read_only транзакцию в в EXECUTE STATEMENT ON EXTERNAL была бы тут очень кстати.
...
Рейтинг: 0 / 0
Управление транзакциями в EXECUTE STATEMENT ON EXTERNAL
    #40002409
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bsv9,

забей. В 4.0 read only транзакция всё равно будет удерживать сборку мусора, пока курсор не закрыт или полностью не вычитан. Но она будет удерживать сборку мусора только для версий которые требуется ей, а не версий всех транзакций стартовавших после неё.
...
Рейтинг: 0 / 0
Управление транзакциями в EXECUTE STATEMENT ON EXTERNAL
    #40002444
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
забей. В 4.0 read only транзакция всё равно
Звучит как - останови все проекты и жди 4.0 :)
...
Рейтинг: 0 / 0
Управление транзакциями в EXECUTE STATEMENT ON EXTERNAL
    #40002445
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
В 4.0 read only транзакция всё равно будет удерживать сборку мусора, пока курсор не закрыт или полностью не вычитан
Уточню - тут речь о read committed read consistency тр-циях.
...
Рейтинг: 0 / 0
Управление транзакциями в EXECUTE STATEMENT ON EXTERNAL
    #40002449
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

в EXECUTE STATEMENT в рамках 2.5 и 3.0 всё равно новых возможностей уже вносить не будут.
Так что просьба потенциально для 4.0, а там как я уже объяснил это имеет мало смысла.
Точнее может и имеет смысл, но хорошего обоснования её необходимости со стороны вопрошающих пока нет.
...
Рейтинг: 0 / 0
Управление транзакциями в EXECUTE STATEMENT ON EXTERNAL
    #40002483
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

смысл есть, но придётся менять BLR, а это чревато проблемами при downgrade.
Ну и время на это, конечно, нужно.
...
Рейтинг: 0 / 0
Управление транзакциями в EXECUTE STATEMENT ON EXTERNAL
    #40002495
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bsv9Хранимая процедура работает в базе OLAP, ей нужна пишущая транзакция и она работает очень
долго. Кроме того, ей нужны данные из OLTP-базы. Это заставляет нас держать длинную
пишущую транзакцию в OLTP-базе, для которой такие длинные транзакции категорически
противопоказаны.

Во-первых, противопоказание не категорическое. Транзакция на десяток минут в нормальной
OLTP никого не убьёт. Во-вторых, в этой процедуре никто не заставляет её "держать".
Автономка будет в самый раз на то, чтобы вытянуть нужные данные во временные таблицы и
работать с ними хоть до позеленения. В-третьих, обычно в OLAP базы данные из OLTP совсем
другими методами. В-четвёртых, процедура, которая работает "очень долго" уже заставляет
нехорошо коситься на разработчика базы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Управление транзакциями в EXECUTE STATEMENT ON EXTERNAL
    #40009111
Евгений Килин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Звучит как - останови все проекты и жди 4.0 :)

Когда я регал хотелку звучало "Вроде не сильно сложно доработать, сделай заявку" :)
Полагаю в 4-ке тоже не сделают.
...
Рейтинг: 0 / 0
Управление транзакциями в EXECUTE STATEMENT ON EXTERNAL
    #40009340
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, мою старую тему подняли, это хорошо. Поясню, откуда вопрос возник.

Есть "центральная" база OLTP и есть несколько дополнительных баз, которые являются по сути справочниками. Справочные базы основное время неизменны, но примерно раз в сутки для каждой из них (вразнобой) проходит большое обновление в одну или несколько длинных транзакций. Пополнение справочных баз проводится отдельным клиентом, центральная база в этом не участвует. Центральныя база обращается к справочным через execute statement on external , и только на чтение. Вообще-то и так неплохо получается, но вот какие есть связанные с этим соображения:

1. Если явно поставить транзакции execute statement on external флаг ReadOnly, это убережет от случайных попыток модификации справочников. Это, возможно, паранойя.

2. Если транзакция чтения проходит во время пополнения, и она вдруг окажется snapshot, ну мало ли, execute statement on external сидит внутри процедуры, а кто и когда вызовет эту процедуру, еще неизвестно, то в пополняемых справочниках начнет накапливаться мусор. Не смертельно, но все-таки, зачем копить лишнее.

Поэтому вызывать справочники хочется, явно задавая параметры транзакций для execute statement on external . Но не смертельно.
...
Рейтинг: 0 / 0
Управление транзакциями в EXECUTE STATEMENT ON EXTERNAL
    #40009342
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой-ё....

1. Select не может модифицировать таблицы. В особенности - случайно.
2. Мусор неспособен накапливаться в базах, который "в основном неизменны".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Управление транзакциями в EXECUTE STATEMENT ON EXTERNAL
    #40009344
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyansky
1. Если явно поставить транзакции execute statement on external флаг ReadOnly, это убережет от случайных попыток модификации справочников. Это, возможно, паранойя.
штатный механизм грантов чем не угодил?
shalamyansky
2. Если транзакция чтения проходит во время пополнения, и она вдруг окажется snapshot, ну мало ли, execute statement on external сидит внутри процедуры, а кто и когда вызовет эту процедуру, еще неизвестно, то в пополняемых справочниках начнет накапливаться мусор. Не смертельно, но все-таки, зачем копить лишнее.
Вот это уже паранойя.

Странные вводные, привели к странным выводам, хотя, да, хотелка по возможностям управления вполне годная.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Управление транзакциями в EXECUTE STATEMENT ON EXTERNAL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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