Существует 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);
}