Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 缓慢休眠冲洗_Java_Mysql_Performance_Hibernate - Fatal编程技术网

Java 缓慢休眠冲洗

Java 缓慢休眠冲洗,java,mysql,performance,hibernate,Java,Mysql,Performance,Hibernate,我尝试将数据保存到MySql(本地数据库)中,抛出HibernateTemplate- getHibernateTemplate().execute(new HibernateCallback<Void>() { @Override public Void doInHibernate(Session session) throws HibernateException, SQLException { fo

我尝试将数据保存到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;
            }
        });
getHibernateTemplate().execute(新的HibernateCallback()){
@凌驾
public Void doInHibernate(会话会话)抛出HibernateeException、SQLException{
for(TimeInvocationStatistics统计信息:统计信息){
会话。持续(stat);
}
persist(workloadProcessDescriptiveStatistics);
session.flush();
返回null;
}
});
数据的大小不是很大,但此操作需要60秒以上

我试着描述它-

(良好的图片分辨率-)

正如我所看到的session.flush()(stacktrace中的第二行)运行缓慢,我如何改进它?可能是MySql服务器的问题吗


UPD:查找有趣的线程-,尝试以这种方式执行

,而不知道您有多少
TimeInvocationStatistics
,也不知道您的表是如何设置的,或者这些表中有多少数据。我的最佳猜测是,您正在插入单个行,您应该作为一个批插入。我们最近有一个应用程序,它试图插入18k行的一些相当简单的数据(我最初并没有编写它),通过移动到批量插入,我们将时间从大约18min缩短到大约2sec


之所以有如此大的改进,是因为索引和表大小。每次插入都会导致数据库重新计算索引。数据集越大,重新计算索引所需的时间就越长。这是索引DB表的折衷方法:查找速度与插入速度。通过批处理插入,DB只需要为整个表计算一次索引。效率更高。

问题是,批处理不起作用,因为我使用了错误的生成策略。请在此处阅读有关此问题的信息-


  • 请给我们看SQL解释计划。它有助于计算实体数在200-500之间的数据库工作时间。关于索引的信息很有趣,我将检查它。