动态创建每年的表格(hibernate + java + postgresql)

时间:2019-02-20 05:13:11

标签: java postgresql hibernate hibernate-mapping

有一个Java Web应用程序确实使用Hibernate与数据库进行交互。最近,该网络应用开始运行缓慢,并且在某些操作中变得越来越差,调试之后,我发现这是数据库问题。其中一张用于响应特定数据的表大约有300万行,并且在不断增加,因此添加一条记录大约需要5-10秒。

我当时正在考虑为每年创建不同的表,因此例如2018年的数据将仅存储在table_xxx_2018中。一种解决方案是手动预先创建所有表和类,然后将它们映射到.hbm.xml文件中,但是我不知道它是否是一个好的解决方案。而且,它似乎不是可持续的。因此,我很期待看看是否有可能使用hibernate创建动态表并将其与Java中的响应类进行映射。

我还搜索了PostgreSQL的一些调整和改进,但没有帮助。主要问题是进入应用程序的数据流量增加,并且似乎Postgres开始阻塞每张表3百万+行。

这些是服务器规格,只有Postgres在此服务器上运行,而没有其他内容:

  • CPU英特尔至强E5-2630 @ 2.30Ghz
  • RAID中的RAM 32 GB和SSD驱动器

欢迎提出任何建议

EDIT1:

一段代码的例子

@Override
public void saveOrUpdateCitizen(Citizen citizen) {
    Session session = sessionFactory.getCurrentSession();
    session.saveOrUpdate(citizen);              
}

0 个答案:

没有答案