Медленная перекрестная загрузка из oracle (oracle-fdw) в PostgreSQL

Я создал несколько сообщений на форуме о проблеме с производительностью, но теперь, после того как я провел несколько тестов и собрал всю необходимую информацию, я создаю этот пост.

У меня проблемы с производительностью двух больших таблиц. Эти таблицы расположены в удаленной базе данных Oracle. Я бегу кверт: insert into local_postgresql_table select * from oracle_remote_table.

Первая таблица имеет 45M записей, а ее размер составляет 23G. Импорт данных из удаленной базы данных Oracle занимает 1 час 38 минут. После этого я создаю 13 регулярных индексов для таблицы, и это занимает 10 минут на таблицу ->2 часа и 10 минут в общей сложности.

Вторая таблица имеет 29M записей, а ее размер составляет 26G. Импорт данных из удаленной базы данных oracle занимает 2 часа 30 минут. Создание индексов занимает 1 час 30 минут (некоторые являются индексами для одного столбца, а создание занимает 5 минут, а некоторые - индексами для столбца с кратными значениями, и это занимает 11 минут.

Эти операции очень проблематичны для меня, и я ищу решение для повышения производительности. Параметры, которые я назначил:

min_parallel_relation_size = 200MB
max_parallel_workers_per_gather = 5 
max_worker_processes = 8 
effective_cache_size = 2500MB
work_mem = 16MB
maintenance_work_mem = 1500MB
shared_buffers = 2000MB
RAM : 5G
CPU CORES : 8

-Я пытался запустить select count(*) из таблицы в oracle, а в postgresql время выполнения практически равно.

-Перед импортом данных я сбрасываю индексы и ограничения.

-Я попытался скопировать файл 23G с сервера оракула на сервер postgresql, и мне потребовалось 12 минут.

Пожалуйста, совет, как я могу продолжить? Как я могу улучшить что-то в этой операции?

0 ответов

Другие вопросы по тегам