Наш текущий подход использует представление (например, view_calculated_invoices) для вычисления и возврата текущего баланса всех счетов. Наша база данных значительно выросла, и производительность начинает падать.
Как вы можете себе представить, старые счета могут предоставить устаревшие данные , поскольку данные практически не изменяются после полной оплаты счета. Новые счета-фактуры очень активны и должны оставаться свежими (например: подача заявки на оплату и / или взимание просроченных платежей).
Какие стратегии производительности следует учитывать для поддержания сочетания старых (требуется меньшее обновление) с новыми счетами (необходимо частое обновление)?
Мы используем Postgresql v10.
Мы пытались использовать материализованное представление, но оно не сработало, потому что нам нужно было слишком часто обновлять данные из-за активности новых счетов.
Мы создали таблицу, чтобы сохранить результат запроса view_calculated_invoices и обновлять один счет-фактуру каждый раз, когда происходит изменение (удаление или обновление), но это вызывает у нас много проблем. Это временная стратегия, но теперь мы готовы рассмотреть профессиональные и лучшие стратегии.