国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

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

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

數(shù)據(jù)庫 在使用mybatis插入大量數(shù)據(jù)的時候,為了提高效率,放棄循環(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í)體類:

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;}

測試類如下:

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萬條數(shù)據(jù)的優(yōu)化過程

執(zhí)行測試類報錯如下:

java.lang.OutOfMemoryError: Java heap space

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

可以看到,Arrays在申請內(nèi)存的時候,導(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表示跳過前i*10000條記錄,limit表示讀取當(dāng)前流的前10000條記錄 testMapper.testBatchInsert(list.stream().skip(i*10000).limit(10000).collect(Collectors.toList()));} }}

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

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

標(biāo)簽: Mybatis 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 美女视频永久黄网站在线观看 | 国产一级二级三级毛片 | 国产欧美日韩综合二区三区 | 国内久久久 | 美女视频黄在线观看 | 在线欧美色 | 天堂8中文在线 | 久久久综合视频 | 在线观看日本亚洲一区 | 天天综合天天看夜夜添狠狠玩 | 性欧美17一18sex性高清播放 | 免费看黄网址 | 欧美久在线观看在线观看 | 国产精品手机在线 | 欧美一级做一级爱a做片性 欧美一欧美一级毛片 | 欧美一级在线观看 | 欧美中文字幕一区二区三区 | 中文字幕精品视频 | 久草勉费视频 | 欧美精品一区二区三区免费播放 | 性欧美成人依依影院 | 欧美笫一页 | 免费一级毛片视频 | 美女张开腿让男生桶出水 | 久久久久久久久综合 | 欧美三级做爰全过程 | 亚州中文字幕 | 亚洲成人天堂 | 国内自拍tv在线 | 欧美一级www | 亚洲男人在线天堂 | 在线观看精品视频网站www | 亚洲深夜福利视频 | 日韩欧美一二区 | 国产综合在线观看 | 国产伦精品一区二区三区精品 | 悟空影视大全免费高清 | 日本久草视频 | 亚洲国产91| 国产区一区二区三区 | 免费一级欧美在线观看视频片 |