Грязные чтения в пост-ГРЭС

У меня есть длительная функция, которая должна вставлять новые строки. Как я проверяю прогресс этой функции?

Я думал, что грязные чтения будут работать так, я прочитал http://www.postgresql.org/docs/8.4/interactive/sql-set-transaction.html и придумал следующий код и выполнил его на новой сессии:


SET SESSION CHARACTERISTICS AS SERIALIZABLE;

SELECT * FROM MyTable;

Пост-ГРЭС дает мне синтаксическую ошибку. Что я делаю неправильно? Если я сделаю это право, то я буду видеть вставленные записи, в то время как та долгая функция все еще работает?

Спасибо

6
задан lospejos 10 August 2019 в 00:59
поделиться

1 ответ

PostgreSQL не реализует способ увидеть это извне функции, он же уровень изоляции READ UNCOMMITTED . Ваши основные два варианта:

  • Используйте функцию RAISE NOTICE время от времени, чтобы показать вам, как далеко вы продвинулись.
  • Используйте что-то вроде dblink от функции обратно в ту же базу данных, и обновите таблицу счетчиков оттуда. Поскольку это совершенно отдельная транзакция, счетчик будет виден, как только эта транзакция будет зафиксирована - вам не нужно ждать завершения основной транзакции (вокруг вызова функции).
11
ответ дан 8 December 2019 в 13:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: