色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

詳解mybatis批量插入10萬(wàn)條數(shù)據(jù)的優(yōu)化過(guò)程

瀏覽:13日期:2023-10-19 13:45:35

數(shù)據(jù)庫(kù) 在使用mybatis插入大量數(shù)據(jù)的時(shí)候,為了提高效率,放棄循環(huán)插入,改為批量插入,mapper如下:

package com.lcy.service.mapper;import com.lcy.service.pojo.TestVO;import org.apache.ibatis.annotations.Insert;import java.util.List;public interface TestMapper { @Insert('') Integer testBatchInsert(List list);}

實(shí)體類(lèi):

package com.lcy.service.pojo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@Data@NoArgsConstructor@AllArgsConstructorpublic class TestVO { private String t1; private String t2; private String t3; private String t4; private String t5;}

測(cè)試類(lèi)如下:

import com.lcy.service.TestApplication;import com.lcy.service.mapper.TestMapper;import com.lcy.service.pojo.TestVO;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;import java.util.ArrayList;import java.util.List;@SpringBootTest(classes = TestApplication.class)@RunWith(SpringRunner.class)public class TestDemo { @Autowired private TestMapper testMapper; @Test public void insert() {List list = new ArrayList<>();for (int i = 0; i < 200000; i++) { list.add(new TestVO(i + ',' + i, i + ',' + i, i + ',' + i, i + ',' + i, i + ',' + i));}System.out.println(testMapper.testBatchInsert(list)); }}

為了復(fù)現(xiàn)bug,我限制了JVM內(nèi)存:

詳解mybatis批量插入10萬(wàn)條數(shù)據(jù)的優(yōu)化過(guò)程

執(zhí)行測(cè)試類(lèi)報(bào)錯(cuò)如下:

java.lang.OutOfMemoryError: Java heap space

at java.base/java.util.Arrays.copyOf(Arrays.java:3746)

可以看到,Arrays在申請(qǐng)內(nèi)存的時(shí)候,導(dǎo)致棧內(nèi)存溢出

改進(jìn)方法,分批新增:

import com.lcy.service.TestApplication;import com.lcy.service.mapper.TestMapper;import com.lcy.service.pojo.TestVO;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;import javax.swing.*;import java.util.ArrayList;import java.util.List;import java.util.stream.Collectors;@SpringBootTest(classes = TestApplication.class)@RunWith(SpringRunner.class)public class TestDemo { @Autowired private TestMapper testMapper; @Test public void insert() {List list = new ArrayList<>();for (int i = 0; i < 200000; i++) { list.add(new TestVO(i + ',' + i, i + ',' + i, i + ',' + i, i + ',' + i, i + ',' + i));}int index = list.size() / 10000;for (int i=0;i< index;i++){ //stream流表達(dá)式,skip表示跳過(guò)前i*10000條記錄,limit表示讀取當(dāng)前流的前10000條記錄 testMapper.testBatchInsert(list.stream().skip(i*10000).limit(10000).collect(Collectors.toList()));} }}

還有一種方法是調(diào)高JVM內(nèi)存,不過(guò)不建議使用,不僅吃?xún)?nèi)存,而且數(shù)據(jù)量過(guò)大會(huì)導(dǎo)致sql過(guò)長(zhǎng)報(bào)錯(cuò)

到此這篇關(guān)于詳解mybatis批量插入10萬(wàn)條數(shù)據(jù)的優(yōu)化過(guò)程的文章就介紹到這了,更多相關(guān)mybatis批量插入10萬(wàn)數(shù)據(jù)內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

相關(guān)文章:
主站蜘蛛池模板: 在线免费精品视频 | 最新久久免费视频 | 欧美极品大肚孕妇孕交 | 日本免费网站视频www区 | 日本www在线视频 | 欧美成人看片一区二区三区尤物 | 男女毛片免费视频看 | 亚洲男人的天堂久久无 | 日本午夜三级 | 国产精品福利午夜一级毛片 | 国产精品久久久久久一区二区三区 | 国产精品99久久久久久人 | 又黄又www | 亚洲人成网址在线播放a | 久久精品视频2 | 中文字幕在线视频精品 | 国产毛片久久久久久国产毛片 | 免费成年网 | 国产碰碰 | 天天操夜夜噜 | 欧美在线a | 中文字幕乱码无线码在线 | 99国产在线 | 国产亚洲欧美一区二区三区 | 特级aaa片毛片免费观看 | 九九热视频在线播放 | 日本免费在线视频 | 草草草在线观看 | 国产黄色小视频 | 欧洲成人全免费视频网站 | 国产精品青草久久久久福利99 | 亚洲欧美中文日韩二区一区 | 欧美孕妇孕交 | 欧美精品专区免费观看 | 成年人免费观看的视频 | 亚洲欧美一区二区三区综合 | 国产三级在线观看视频 | 国产黄色小视频在线观看 | 国产亚洲精品久久久久久久久激情 | 亚洲精品久久99久久一区 | vvvv99日韩精品亚洲 |