Mar*_*llo 5 java mysql performance hibernate
我尝试将我的数据保存到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;
}
});
Run Code Online (Sandbox Code Playgroud)
数据的大小不是很大,但这个操作需要60秒.
我试图描述它 -
(好的图片分辨率 - 图片)
我可以看到session.flush()(stacktrace中的第二行)工作缓慢,我怎么能改进它?可能是MySql服务器问题?
UPD:找到有趣的线程 - 休眠论坛,试着这样做
不知道TimeInvocationStatistics
你有多少,也不知道你的表是如何设置的,或者这些表中有多少数据.我最好的猜测是你要插入单独的行作为批处理.我们最近有一个应用程序试图插入18k行的一些相当简单的数据(我最初没有写它),只是通过移动到批量插入,我们将时间从大约18分钟减少到大约2秒.
这种急剧改进的原因是索引和表格大小.每个插入都会导致DB重新计算索引.数据集越大,重新计算索引所需的时间越长.这是索引DB表的权衡:查找速度与插入速度慢.通过批量插入,DB只需要为整个表计算一次索引.效率更高.
归档时间: |
|
查看次数: |
2637 次 |
最近记录: |