有一个Java Web应用程序确实使用Hibernate与数据库进行交互。最近,该网络应用开始运行缓慢,并且在某些操作中变得越来越差,调试之后,我发现这是数据库问题。其中一张用于响应特定数据的表大约有300万行,并且在不断增加,因此添加一条记录大约需要5-10秒。
我当时正在考虑为每年创建不同的表,因此例如2018年的数据将仅存储在table_xxx_2018
中。一种解决方案是手动预先创建所有表和类,然后将它们映射到.hbm.xml
文件中,但是我不知道它是否是一个好的解决方案。而且,它似乎不是可持续的。因此,我很期待看看是否有可能使用hibernate创建动态表并将其与Java中的响应类进行映射。
我还搜索了PostgreSQL的一些调整和改进,但没有帮助。主要问题是进入应用程序的数据流量增加,并且似乎Postgres开始阻塞每张表3百万+行。
这些是服务器规格,只有Postgres在此服务器上运行,而没有其他内容:
欢迎提出任何建议
EDIT1:
一段代码的例子
@Override
public void saveOrUpdateCitizen(Citizen citizen) {
Session session = sessionFactory.getCurrentSession();
session.saveOrUpdate(citizen);
}