Динамически создавать таблицы для каждого года (hibernate + java + postgresql) - PullRequest
0 голосов
/ 20 февраля 2019

Существует Java-приложение, которое использует Hibernate для взаимодействия с базой данных.Недавно веб-приложение начало работать медленно и ухудшалось для некоторых его операций, и после отладки я обнаружил, что это проблема с базой данных.Одна из таблиц, отвечающая за конкретные данные, получила около 3 млн строк и ее увеличение, поэтому добавление одной записи занимает около 5-10 секунд.

Я думал о создании разных таблиц для каждого года, поэтомунапример, данные за 2018 год будут храниться только в table_xxx_2018.Одним из решений было бы вручную создать все таблицы и классы и отобразить их в .hbm.xml файлах, но я не знаю, является ли это хорошим решением или нет.Кроме того, это не кажется устойчивым.Итак, я с нетерпением ждал возможности создания динамических таблиц с использованием hibernate и сопоставления их с отвечающими классами в java.

Я также погуглил некоторые твики и улучшения для PostgreSQL, но это не помогло.Основная проблема заключается в увеличении потока данных, поступающих в приложение, и кажется, что Postgres начал задыхаться от 3 миллионов + строк на таблицу.

Это спецификации сервера, только Postgres работает на этом сервере и ничего более:

  • Процессор Intel Xeon E5-2630 @ 2,30 ГГц
  • ОЗУ 32 ГБи SSD диски в RAID

Любые предложения приветствуются

EDIT1:

Пример кода

@Override
public void saveOrUpdateCitizen(Citizen citizen) {
    Session session = sessionFactory.getCurrentSession();
    session.saveOrUpdate(citizen);              
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...