@iliya936
Типичный Битриксойд

Как быстро удалить Foreign Table в postgres?

Всем привет!

Стоит задача cвязать и настроить обмен данными из Oracle в Postgresql . Для этого решил использовать oracle fwd реализующий связку через Foreign Table. Глобально имеется 2 вопроса:

1) Не могу удалить foreign table из postgres запросом
DROP FOREIGN TABLE IF EXISTS название таблицы CASCADE
Запрос зависает более чем на 1 час и по итогу таблица не удаляется. Есть ли способ удалить таблицу? Такое поведение наблюдается только на тех таблицах которые уже использовались и получали более 1млн. строк.

2) Если делать элементарный запрос SELECT * FROM fwd_orders LIMIT 500, то все исполняется за 600ms . А если в этот запрос добавить любой ORDER BY, то выполнение запроса идет 10 и более минут (в таблице более 20млн. строк). Почему так происходит? И как можно ускорить работу?

P.S or2pg - не используется по причине кастомизации данных при переносе и необходимости запускать обмен по определенному условию c дополнительной выборкой данных.
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Не могу удалить foreign table из postgres запросом

Посмотреть в pg_blocking_pids, кто мешает. Сделать с этими соединениями что-нибудь (pg_terminate_backend, например)

Если делать элементарный запрос SELECT * FROM fwd_orders LIMIT 500, то все исполняется за 600ms . А если в этот запрос добавить любой ORDER BY, то выполнение запроса идет 10 и более минут (в таблице более 20млн. строк). Почему так происходит? И как можно ускорить работу?

Посмотреть explain (verbose) на предмет того, что считается локально, а что прокидывается на удалённую базу.
В частности, уточнить у используемого расширения oracle fdw, реализован ли там push-down для order by. По описанию похоже что нет такого и потому вся таблица вычитывается и сортируется локально.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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