Я пишу архивный скрипт (на Python с использованием psycopg2), который должен извлечь очень большой объем данных из базы данных PostgreSQL (9.4), обработать, загрузить и затем удалить его из базы данных.
Я запускаю транзакцию, выполняю оператор выбора для создания именованного курсора, извлекаю из курсора N строк за раз и выполняю обработку и выгрузку деталей (используя S3 multipart upload).Когда курсор исчерпан и ошибок нет, я завершаю загрузку и выполняю оператор удаления, используя те же условия, что и в select.Если удаление выполнено успешно, я фиксирую транзакцию.
База данных активно записывается, и важно, чтобы обе одинаковые строки были заархивированы и удалены, а также считывались и записывались в базу данных (включая архивируемую таблицу)продолжать непрерывноПри этом архивируемые таблицы содержат журналы, поэтому существующие записи никогда не изменяются, добавляются только новые записи.
Итак, у меня есть следующие вопросы:
Какой уровень изоляции я должен использовать длягарантировать, что одни и те же строки будут заархивированы и удалены?
Какое влияние эти операции окажут на способность чтения / записи в базу данных?Что-нибудь блокирует запись или чтение в процессе, который я описал выше?