gpt4 book ai didi

java - 慢速 hibernate 刷新

转载 作者:可可西里 更新时间:2023-11-01 07:03:31 26 4
gpt4 key购买 nike

我尝试将我的数据保存到 MySql(本地数据库)抛出 HibernateTemplate -

getHibernateTemplate().execute(new HibernateCallback<Void>() {
@Override
public Void doInHibernate(Session session) throws HibernateException, SQLException {
for (TimeInvocationStatistics stat : statistics) {
session.persist(stat);
}
session.persist(workloadProcessDescriptiveStatistics);
session.flush();
return null;
}
});

数据量不大,但这个操作耗时60多秒。

我试着剖析它 -

enter image description here

(良好的图片分辨率 - picture)

正如我所见,session.flush()(堆栈跟踪中的第二行)运行缓慢,我该如何改进它?会不会是MySql服务器的问题?

UPD:找到有趣的话题 - hibernate forum , 尝试这样做

最佳答案

不知道你有多少 TimeInvocationStatistics,也不知道你的表是如何设置的,或者这些表中有多少数据。我最好的猜测是你在应该插入的地方插入单独的行作为一批。我们最近有一个应用程序试图插入 18k 行的一些相当简单的数据(我最初并没有编写它),并且通过转向批量插入,我们将时间从大约 18 分钟减少到大约 2 秒。

如此显着改进的原因是索引和表大小。每次插入都会导致数据库重新计算索引。数据集越大,重新计算索引所需的时间就越长。这是索引数据库表的权衡:查找速度与插入速度。通过批量插入,数据库只需要为整个表计算一次索引。效率更高。

关于java - 慢速 hibernate 刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21137312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com