范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

MyBatis批量插入使用foreach循环插入的优化,使用分片多线程

  在使用MyBatis进行批量插入数据时,我们常用的方法是在使用insert语句进行批量插入,这种方式在数据量比较少的时候,插入较快,但是当数据量较大的时候,不仅耗时,而且占用的CPU资源比较高。今天我们来对比说明一下,并在最后给出优化的方案。
  先设计一张MySQL数据库,用来存储批量插入的数据,以插入用户信息为例,本次表在设计时多设计一些字段,在插入时的差异凸显的更加明显。
  接下来我以插入50000条数据为例,由浅入深,分别从循环单条插入、批量插入等进行对比分析。 1、循环单条插入
  模拟生成用户的姓名、手机号、身份证号码这些信息,避免因相同数据造成的缓存误差,然后逐条插入数据库中。
  随机生成用户姓名:
  随机生成11位手机号码:
  随机生成身份证号码:
  逐条插入用户数据的实现方法(使用JUnit进行单元测试),需要了解JUnit进行单元测试,可以访问上一篇文章SpringBoot框架集成JUnit单元测试:
  插入完毕,查看控制台总耗时,以及数据库的数据入库情况:
  执行总共耗时1634240ms,也就是27分钟左右。 2、使用foreach批量插入
  在同等条件下进行测试验证,还是自动生成用户信息,封装成list,然后一次性插入。
  这种方式相对于第一种方式,进行了提升,原理就是将
  转换为
  此时我们去执行程序发现,程序报错
  如果我们将批量插入的50000条数据改成10000条,发现1秒左右就执行结束了。
  从上面可以看出,使用foreach进行批量插入,原理上就是让多条insert into插入语句变成一条插入语句,可以带来性能上的提升,但同时也带来了两个问题:
  (1)当插入的数据较多时,相当于拼接的sql语句会特别的长,甚至超过sql语句的长度,一旦超出,就会抛出异常导致无法插入。
  (2)当插入的数据较多时,也比较耗时,针对这点官方也做了说明,这里我们就不做详细的拓展,我们继续讨论怎么解决这个问题。这里贴一张官方的说明截图。
  这句话要表达的意思就是,当插入数量很多时,不能一次性全放在一条语句里。 3、使用foreach配合分片批量插入
  既然不能封装成一条SQL,那我们考虑有没有其他的方式,当然有,可以采用分片的方式。
  主要原理就是将list集合按"指定长度"进行切分,返回新的List>集合。
  可以看出,50000条数据,不到2秒钟就插入完成,大大提高了效率。
  这里分片的目的有两个:
  1、批量插入,拼接的SQL语句过长,sql语句会有限制;
  2、分片后采用stream多线程并行插入可以提高效率;
  此外,不管是mysql还是oracle数据库,都可以使用分片进行插入。

乐高大乱斗随时玩随时停,简单乐趣无穷欢迎关注,获取更多游戏评测资讯,入手与否不再犹豫喜欢的不妨点个赞唷()游戏倦怠期,好玩最重要我们都知道工作也好学习也好,一旦变成长期性持久性日常性的行为之后,那么就几乎不可避免地会慧拓如何在矿区创造一个平行世界?嘉和硬科技捕手记嘉和硬科技捕手记是国科嘉和2020年推出的一档新栏目,内容主要关于硬科技创业与投资的底层思维方式行业观察和经验的梳理。我们不仅会在这里分享代表性创投案例行研心得,还将结合硬科技项目产地方面少数煤矿出现库存累积,北港市场煤价有上扬态势今日,产地方面,受疫情影响,内蒙古部分区域实行静态管理,部分路段进行交通管制,煤炭公路外运受到一定程度影响,在保供大前提下,市场煤部分外运空间受到压缩。目前产地方面生产正常,煤矿仍第十七届振兴杯全国青年职业技能大赛(职工组)海南省选拔赛报名启动新海南客户端南海网南国都市报10月9日消息(记者钟圆圆)海南自贸港建设如火如荼,各行各业青年都在奋力拼搏苦练技能,在自己的岗位发光发热大展身手。现在,是时候点亮你的技能树了,这里有农商银行职工的隐形福利有哪些?能进入农商银行工作的小伙伴们,待遇其实还是不错的,只要经营不是太差的农商行,职工到手工资最低有10万左右,比普通公务员工资还是稍高点。那么除了到手看的见的工资,农商银行职工还有哪些奋进新征程建功新时代喜迎二十大埋头苦干构建水利发展新格局甘肃省水利系统干部职工以实际行动迎接党的二十大胜利召开奋进新征程建功新时代喜迎二十大埋头苦干构建水利发展新格局我省水利系统干部职工以实际行动迎接党的二十大胜利召开新甘肃甘肃日报记者王煜宇全省水网布局正在加快构建,各地水利工程有序实施,拒绝人流!下半年就去这9个地方1北疆但作为自然风光爱好者的我,北疆风景更令我心醉这里以以高山草原河谷景观为主,代表景点如禾木喀纳斯赛里木湖魔鬼城以及那拉提和巴音布鲁克等,都是我首推的好去处2山东威海已经去海边上农行陕西省分行服务地方经济高质量发展十年印记阳光讯(通讯员张铁军高海霞记者成英)三秦大地,一片古老而又神奇的土地。滔滔黄河蜿蜒奔腾,巍巍秦岭脉通九州。在中华文明源远流长的历史进程中,陕西扮演着极其重要的角色在中国革命史上,陕自助餐可以有多便宜?这个地方,6元前段时间,广西人才懂的六元自助餐一词条登上了微博热搜。许多广西人看了词条下的视频先是一愣,接着便在手机屏幕前露出会心一笑。食客们正围坐在长桌前大快朵颐。刘俊聪摄视频拍摄于广西的一家探索文旅融合丰富文化业态,山西运城古城融出新风采山西省运城市解州关帝庙景区是山西省第八次旅游发展大会的主会场,苍翠中条山衬托下,一座两层红色建筑格外惹眼,这是9月刚建成的关公数字博物馆。全息投影VR(虚拟现实)等科技手段的运用,粮油帝国背后的金龙鱼头条创作挑战赛连载(1)我讲述的是金龙鱼品牌及其母公司丰益国际商业传奇故事,牵扯到了国内鲁花胡姬花等粮油龙头包含不为人知的一面说起郭鹤年大家可能不知道他是谁,但北京国贸就是他家的产
在坐牢期间得了精神病疯了,还需要继续坐牢吗?在坐牢期间得精神病疯了,监狱会带你去往指定的医院先进行鉴定你是否真的疯了如果鉴定结论是真的患有精神类疾病,会给你变更刑事措施,依法变更为保外就医或监视居住。因为你违法了,本该受到惩为什么很多人失业了,却拿不到失业金呢?中国人口太多,无业可就,中年失业叫下岗,青年失业叫待业。没有失业就不可能有失业金。用人单位及劳动者缴纳失业保险金一年以上,失业后符合下列条件的,才能领取失业保险金。一是非因本人意愿江西夫妇因燃气热水器而意外去世,给了我们什么样的反思?江西夫妇因燃气热水器而意外去世,留下了8个未成年的孩子,虽说在有关部门的关爱下,每个孩子每月有了1200元的救助金,有了伯父伯母及奶奶的照顾与监护,长大成人只是时间问题了,但是留给独居生活到底有多可怕?独居生活到底有多可怕?独居生活没有什么可怕的,本人62岁独居10多年。性格内向孤僻的原因觉得一个人生活很好是事自己做主。日常生活非常随意,不需要为另一半着想。只要照顾好自己,这个家父母没有退休金,孩子找对象受歧视吗?我告诉我儿子找对象时一定达到这几个条件独生女,有稳定工作,父母有退休金,原生家庭,个子高。孩子说我的条件多,我老公给孩子说了,我们不扶贫也不高攀,门当户对即可。因为当初我们两口子是死刑犯在监狱里,普通犯人再牛也要避让三分,为什么?死刑犯在监狱里,普通犯人再牛也要避让三分,为什么?犯罪嫌疑人被公安机关刑事拘留或逮捕后,移送人民检察院起诉人民检察院审查后移送人民法院审判。初审人民法院判处被告人死刑立即执行终审人有人说农民没交养老保险,所以不能给养老金养老,你怎么看?这种老掉牙的问题提过八百遍了,按法律政策办就完了。想吃白食不劳而获耍赖碰瓷的机会几乎为零。总想着天上掉馅饼的事儿?城镇国企下岗工人,自己不缴纳养老保险金,一样没有退休金。那还能咋看蜜蜂能坚持6个月不排便,人能坚持多久?2个真实案例证明人能坚持更久,英国一个男人憋了47天,美国一个男人憋了整整3年,创下了吉尼斯世界纪录。案例一在英国,有一名男子在运送毒品的时候,为了躲避检查,把毒品严密包裹之后吃进我52岁改嫁,如今二婚老伴去世,子女和继子女,我该找谁养老?你感觉找谁可以养老?抛夫弃子20多年了,你在那生活好好的。就因为后夫去世了,你想回去能说得过去吗?52你改的嫁,相比后夫的孩子都成成年人了,之所以你能在那过下去,是因为老头子感觉有麦当劳响应国家号召,开始招聘退休老人。你会去应聘吗?这是我的亲身经历,我是一个退休人员。首先去面试,很融洽,面试合格。下面需要准备一下材料1需要体检报告合格,健康证需要花大约200元,2买裤子蓝色的,鞋防滑的,俗称肯德基鞋。制装费。农村老人没有养老金,只能靠子女养活吗?不靠儿女,还想靠谁?难不成要别人替你儿女接盘吗?每个人都有自己的父母,每个人都要赡养自己的老人。农村老人能拒绝养老保险丶是因为有宅基地丶菜园丶耕地,农民可以享受补贴和基础养老金,自