大批量数据的插入优化的小细节

今天在测试将elasticsearch中的20万条数据迁移到MySQL中时,总感觉速度比较慢,尝试了好多方法,比如网上都说的:

    public void batchSave(List<MailDeliveryTask> tasks) {
        Session session = sessionFactory.openSession();
        for (MailDeliveryTask task : tasks) {
            session.save(task);
        }
        session.flush();
        session.clear();
        session.close();
    }

这种的,但是好像发现打印出来的sql还是逐条insert的,不知道是不是自己的原因,没起作用。

因为我用的是springdata jpa集成的hibernate,最后我关闭了hibernate的show_sql,也就是不打印出sql,发现速度快了不少!

时间: 2024-11-08 17:28:31

大批量数据的插入优化的小细节的相关文章

数据库插入或者更新大批量数据的性能优化

对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长.特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久.因此,优化数据库插入性能是很有意义的. 经过对MySQL InnoDB的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考. 1.一条SQL语句插入多条数据 常用的插入语句如: INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUE

jdbc批量插入实现大批量数据快速插入

今天在做一个将excel数据导入数据库的程序时,由于数据量大,准备采用jdbc的批量插入.于是用了preparedStatement.addBatch();当加入1w条数据时,再执行插入操作,preparedStatement.executeBatch().我原以为这样会很快,结果插入65536条数据一共花30多分钟,完全出乎我的意料.于是问了一下同事,他们在处理这种大批量数据导入的时候是如何处理的,发现他们也是用的jdbc批量插入处理,但与我不同是:他们使用了con.setAutoCommit

jQuery的性能优化38小细节

一.注意定义jQuery变量的时候添加var关键字这个不仅仅是jQuery,所有javascript开发过程中,都需要注意,请一定不要定义成如下:$loading = $('#loading'); //这个是全局定义,不知道哪里位置倒霉引用了相同的变量名,就会郁闷至死的二.请使用一个var来定义变量如果你使用多个变量的话,请如下方式定义: 代码如下: 1 var page = 0, 2 $loading = $('#loading'), 3 $body = $('body'); 不要给每一个变量

数据批量插入MSSQL

MSSQL数据批量插入优化详细 序言 现在有一个需求是将10w条数据插入到MSSQL数据库中,表结构如下,你会怎么做,你感觉插入10W条数据插入到MSSQL如下的表中需要多久呢? 或者你的批量数据是如何插入的呢?我今天就此问题做个探讨. 压测mvc的http接口看下数据 首先说下这里只是做个参照,来理解插入数据库的性能状况,与开篇的需求无半毛钱关系. mvc接口代码如下: public bool Add(CustomerFeedbackEntity m) { using (var conn=Co

一些小细节可以看到优化的精髓

外链为王,内容为皇的说法在seo行业似乎已经成为了不变的定理,让众多行业人士忽略了网站结构的建设.外链.内容固然重要,但是不能厚此薄彼,网站设计也是大家不可忽略的部分. 1.404错误页面 基本上每个网站都有存在死链的情况,死链一般会出现在删除某一篇内容或产品之后,导致搜索引擎无法访问原来的链接,这样的链接称为死链.一个网站死链如果太多会让蜘蛛产生反感的情绪以至于不再抓取网站内容,要解决网站死链问题设置404页面很重要,通过404页面的引导可以让蜘蛛爬取别的内容,同时也不会导致用户流失.如果不会

Oracle Sales Cloud:报告和分析(BIEE)小细节2——利用变量和过滤器传参(例如,根据提示展示不同部门的数据)

在上一篇随笔中,我们建立了部门和子部门的双提示,并将部门和子部门做了关联.那么,本篇随笔我们重点介绍利用建好的双提示进行传参. 在操作之前,我们来看一个报告和分析的具体需求: [1] 两个有关联的提示:部门和子部门. 1.部门包括北京销售部.郑州销售部(此处为小的模拟例子,具体项目实施中可以根据相应字段选取): 2.子部门包括北京销售1部.北京销售2部.郑州销售1组.郑州销售2组: 3.当部门的值为北京销售部时,子部门的值列表范围为:北京销售1部.北京销售2部:郑州销售部同理. (已满足,并且:

MYSQL 大批量数据插入

最近在做MYSQL大批量数据的测试,就简单总结一下遇到的问题: 首先我是简单的写了一个MYSQL的循环插入数据的SP,具体如下: 这是插入100W数据的过程和结果,可以看到是换了55min +20S约3320秒(约300rows/s),看到之后我是只崩溃,就在网上查了些提速的方法: 0. 最快的当然是直接 copy 数据库表的数据文件(版本和平台最好要相同或相似): 1. 设置 innodb_flush_log_at_trx_commit = 0 ,相对于 innodb_flush_log_at

强壮你的C和C++代码30个小细节

1 初始化局部变量 使用未初始化的局部变量是引起程序崩溃的一个比较普遍的原因, 2 初始化WINAPI 结构体 许多Windows API都接受或则返回一些结构体参数,结构体如果没有正确的初始化,也很有可能引起程序崩溃.大部分Windows API结构体都必须有一个cbSIze参数,这个参数必须设置为这个结构体的大小. 注意:千万不要用ZeroMemory和memset去初始化那些包括结构体对象的结构体,这样很容易破坏其内部结构体,从而导致程序崩溃. 3 检测函数输入参数有效性 在函数设计的时候

前台页面验证中需要注意的一个与VARCHAR2(N BYTE)和VARCHAR2(N CHAR)的小细节

1:一个小的测试实例 CREATE TABLE SALES.TEST_ ( TEST_BYTE VARCHAR2(5 BYTE), TEST_CHAR VARCHAR2(5 CHAR) )--TABLE CREATED INSERT INTO TEST_ (TEST_CHAR) VALUES('12345')--1 ROW INSERTED INSERT INTO TEST_ (TEST_BYTE) VALUES('12345')--1 ROW INSERTED INSERT INTO TEST