Отложить удаление каскадных объектов в Postgres? - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть небольшая БД с 10 таблицами, все из которых связаны отношениями внешнего ключа (FK). Некоторые из них используют объединенную таблицу наследования. Все отношения имеют cascade=all,delete в ORM. Все ФК проиндексированы. Я использую SQLAlchemy.

Удаление объекта является длинным, потому что есть много связанных больших объектов, которые удаляются в каскаде. У меня есть базовый интерфейс, который выполняет несколько операций в основном потоке. Я посмотрю на задержку удаления в фоновом режиме и получу уведомление в пользовательском интерфейсе. Но:

Есть ли способ удалить только основной объект (быстро) и отложить удаление каскадных объектов (медленно) позже, например, на ночь или во время простоя БД? Чтобы операция выглядела быстрее с точки зрения пользователя?

1 Ответ

0 голосов
/ 12 сентября 2018

В соответствии с delete docs здесь. Если вы не укажете каскад удаления, то по умолчанию sqlalchemy ведет себя так, что он делает детей сиротами, поскольку они не связаны с родителями. Если это так, то это может работать в вашем случае, если внешний ключ имеет значение Null, и позже вы можете выполнить простой запрос, а нагрузка на базу данных будет меньше, чтобы удалить сирот.

этот пост также может помочь в разъяснении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...