我在使用具有大量记录的休眠更新 (Session.update()) 部分时遇到问题。它变得非常慢。但插入 (Session.insert()) 部分没有问题。有没有办法在我们更新十万条记录时进行更新部分。有没有办法调整 sql 服务器,以便更新变得更快。当我们向所有主要字段添加单独的索引时,删除部分需要时间。有没有更好的方法来调整 sql server 使其在插入、删除和更新方面表现良好。
谢谢你,赛义夫。
我在使用具有大量记录的休眠更新 (Session.update()) 部分时遇到问题。它变得非常慢。但插入 (Session.insert()) 部分没有问题。有没有办法在我们更新十万条记录时进行更新部分。有没有办法调整 sql 服务器,以便更新变得更快。当我们向所有主要字段添加单独的索引时,删除部分需要时间。有没有更好的方法来调整 sql server 使其在插入、删除和更新方面表现良好。
谢谢你,赛义夫。
对每条记录进行批量更新而不是单独更新。这样,您只需为所有记录访问数据库一次。
当您进行保存时,仅将数据保存到数据库中,而当您更新记录时,它必须首先执行搜索操作然后更新记录,这就是为什么您在处理大量数据时面临更新问题而不是保存问题的原因的记录可以使用hibernate的BATCH PROCESSING来更新你的记录。这是从教程点开始在休眠中进行批处理的一个很好的链接:
http://www.tutorialspoint.com/hibernate/hibernate_batch_processing.htm
可能还有其他解决方案,但我知道的一种方法是:
每当您通过 保存或更新实例时session (e.g. session.save(), session.update(), session.saveOrUpdate() etc.)
,它也会更新实例 FK 关联。
因此,如果您的 POJO 有多个 FK 关联,它也会触发对这些表的查询。
因此,我建议不要以这种方式更新实例,而是使用 HQL(如果它适用于您的要求)来保存或更新实例。