一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SpringBoot利用ThreadPoolTaskExecutor批量插入百萬級數(shù)據(jù)實測!

jf_ro2CN3Fa ? 來源:CSDN ? 作者:CSDN ? 2022-11-16 10:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


前言

  • 開發(fā)目的: 提高百萬級數(shù)據(jù)插入效率。
  • 采取方案: 利用ThreadPoolTaskExecutor多線程批量插入。
  • 采用技術(shù): springboot2.1.1+mybatisPlus3.0.6+swagger2.5.0+Lombok1.18.4+postgresql+ThreadPoolTaskExecutor等。

基于 Spring Boot + MyBatis Plus + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro
  • 視頻教程:https://doc.iocoder.cn/video/

具體實現(xiàn)細(xì)節(jié)

application-dev.properties添加線程池配置信息

> 基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能
>
> * 項目地址:
> * 視頻教程

# 異步線程配置
# 配置核心線程數(shù)
async.executor.thread.core_pool_size = 30
# 配置最大線程數(shù)
async.executor.thread.max_pool_size = 30
# 配置隊列大小
async.executor.thread.queue_capacity = 99988
# 配置線程池中的線程的名稱前綴
async.executor.thread.name.prefix = async-importDB-

spring容器注入線程池bean對象

@Configuration

@EnableAsync

@Slf4j

publicclassExecutorConfig{
@Value("${async.executor.thread.core_pool_size}")
privateintcorePoolSize;
@Value("${async.executor.thread.max_pool_size}")
privateintmaxPoolSize;
@Value("${async.executor.thread.queue_capacity}")
privateintqueueCapacity;
@Value("${async.executor.thread.name.prefix}")
privateStringnamePrefix;

@Bean(name="asyncServiceExecutor")
publicExecutorasyncServiceExecutor(){
log.warn("startasyncServiceExecutor");
//在這里修改
ThreadPoolTaskExecutorexecutor=newVisiableThreadPoolTaskExecutor();
//配置核心線程數(shù)
executor.setCorePoolSize(corePoolSize);
//配置最大線程數(shù)
executor.setMaxPoolSize(maxPoolSize);
//配置隊列大小
executor.setQueueCapacity(queueCapacity);
//配置線程池中的線程的名稱前綴
executor.setThreadNamePrefix(namePrefix);
// rejection-policy:當(dāng)pool已經(jīng)達(dá)到max size的時候,如何處理新任務(wù)
// CALLER_RUNS:不在新線程中執(zhí)行任務(wù),而是有調(diào)用者所在的線程來執(zhí)行
executor.setRejectedExecutionHandler(newThreadPoolExecutor.CallerRunsPolicy());
//執(zhí)行初始化
executor.initialize();
returnexecutor;
}
}

創(chuàng)建異步線程 業(yè)務(wù)類

@Service
@Slf4j
publicclassAsyncServiceImplimplementsAsyncService{
@Override
@Async("asyncServiceExecutor")
publicvoidexecuteAsync(ListlogOutputResults,LogOutputResultMapperlogOutputResultMapper,CountDownLatchcountDownLatch){
try{
log.warn("startexecuteAsync");
//異步線程要做的事情
logOutputResultMapper.addLogOutputResultBatch(logOutputResults);
log.warn("endexecuteAsync");
}finally{
countDownLatch.countDown();//很關(guān)鍵,無論上面程序是否異常必須執(zhí)行countDown,否則await無法釋放
}
}
}

創(chuàng)建多線程批量插入具體業(yè)務(wù)方法

@Override
publicinttestMultiThread(){
ListlogOutputResults=getTestData();
//測試每100條數(shù)據(jù)插入開一個線程
List>lists=ConvertHandler.splitList(logOutputResults,100);
CountDownLatchcountDownLatch=newCountDownLatch(lists.size());
for(ListlistSub:lists){
asyncService.executeAsync(listSub,logOutputResultMapper,countDownLatch);
}
try{
countDownLatch.await();//保證之前的所有的線程都執(zhí)行完成,才會走下面的;
//這樣就可以在下面拿到所有線程執(zhí)行完的集合結(jié)果
}catch(Exceptione){
log.error("阻塞異常:"+e.getMessage());
}
returnlogOutputResults.size();
}

模擬2000003 條數(shù)據(jù)進(jìn)行測試

4fc16cce-6555-11ed-8abf-dac502259ad0.png

多線程 測試 2000003 耗時如下:耗時1.67分鐘

4fe0a918-6555-11ed-8abf-dac502259ad0.png4fe8a71c-6555-11ed-8abf-dac502259ad0.png

本次開啟30個線程,截圖如下:

5003382a-6555-11ed-8abf-dac502259ad0.png

單線程測試2000003 耗時如下:耗時5.75分鐘

502a55e0-6555-11ed-8abf-dac502259ad0.png504a0548-6555-11ed-8abf-dac502259ad0.png

檢查多線程入庫的數(shù)據(jù),檢查是否存在重復(fù)入庫的問題:

根據(jù)id分組,查看是否有id重復(fù)的數(shù)據(jù),通過sql語句檢查,沒有發(fā)現(xiàn)重復(fù)入庫的問題

506e5010-6555-11ed-8abf-dac502259ad0.png

檢查數(shù)據(jù)完整性:通過sql語句查詢,多線程錄入數(shù)據(jù)完整

50798f48-6555-11ed-8abf-dac502259ad0.png

測試結(jié)果

不同線程數(shù)測試:

508bc816-6555-11ed-8abf-dac502259ad0.png50969b9c-6555-11ed-8abf-dac502259ad0.png

總結(jié)

通過以上測試案列,同樣是導(dǎo)入2000003 條數(shù)據(jù),多線程耗時1.67分鐘,單線程耗時5.75分鐘。通過對不同線程數(shù)的測試,發(fā)現(xiàn)不是線程數(shù)越多越好,具體多少合適,網(wǎng)上有一個不成文的算法

CPU核心數(shù)量*2 +2 個線程。

附:測試電腦配置

50c32c2a-6555-11ed-8abf-dac502259ad0.png

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    783

    瀏覽量

    45148
  • 多線程
    +關(guān)注

    關(guān)注

    0

    文章

    279

    瀏覽量

    20444
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    340

    瀏覽量

    15077
  • SpringBoot
    +關(guān)注

    關(guān)注

    0

    文章

    175

    瀏覽量

    401

原文標(biāo)題:性能爆表:SpringBoot利用ThreadPoolTaskExecutor批量插入百萬級數(shù)據(jù)實測!

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    批量多品種生產(chǎn)困局破冰:選擇性波峰焊如何重塑柔性電子制造競爭力

    基板在焊接時的變形和保護(hù)錫膏印刷貼片物料不被錫波沖走,根據(jù)實際應(yīng)用調(diào)查換線后,設(shè)備調(diào)試編程和參數(shù)設(shè)定大約需1小時,調(diào)試完成后首件驗證約2小時,治具開發(fā)成本在2000-8000元/款,年投入超百萬
    發(fā)表于 06-30 14:54

    如何區(qū)分usb-typec是插入電腦還是插入其他電源?

    使用的是01的板子,要做成在usb插入電腦時,使用uvc相機(jī), usb插入電源時使用顯示屏播放 如何判斷設(shè)備是插入到電腦還是電源,是通過某個設(shè)備節(jié)點(diǎn)還是什么? 需要先運(yùn)行
    發(fā)表于 04-24 08:23

    樹莓派5 + Hailo AI加速器:工業(yè)級數(shù)數(shù)據(jù)處理實戰(zhàn),打通SQLite與機(jī)器學(xué)習(xí)全鏈路

    本文討論了在工業(yè)自動化背景下,開發(fā)者利用樹莓派5和HailoAI加速器進(jìn)行工業(yè)級數(shù)數(shù)據(jù)處理實戰(zhàn),打通SQLite與機(jī)器學(xué)習(xí)全鏈路時遇到的問題及解決方案。關(guān)鍵要點(diǎn)包括:1.開發(fā)者需求:構(gòu)建能從
    的頭像 發(fā)表于 03-25 09:22 ?518次閱讀
    樹莓派5 + Hailo AI加速器:工業(yè)<b class='flag-5'>級數(shù)</b>值<b class='flag-5'>數(shù)據(jù)</b>處理實戰(zhàn),打通SQLite與機(jī)器學(xué)習(xí)全鏈路

    插入式電磁流量計的應(yīng)用范圍要知道

    插入式電磁流量計的結(jié)構(gòu)比較簡單,沒有可活動部件,測量數(shù)值比較準(zhǔn)確,比其他安裝形式的電磁流量計體積小便于安裝。且插入式電磁流量計的應(yīng)用范圍一點(diǎn)不比管段式的少,接下來我們詳細(xì)說說插入式電磁流量計
    的頭像 發(fā)表于 02-07 15:35 ?478次閱讀
    <b class='flag-5'>插入</b>式電磁流量計的應(yīng)用范圍要知道

    hyper v vmware,hyper v vmware的操作步驟,hyper-v批量管理工具的使用指南

    的健身數(shù)據(jù)和消費(fèi)數(shù)據(jù)進(jìn)行分析,為會員提供個性化的健身方案和服務(wù);在課程安排方面,批量虛擬機(jī)可以根據(jù)會員的需求和時間,合理安排課程,提高課程的利用率和滿意度;在健身
    的頭像 發(fā)表于 02-07 15:29 ?311次閱讀
    hyper v vmware,hyper v vmware的操作步驟,hyper-v<b class='flag-5'>批量</b>管理工具的使用指南

    hyper 下載,hyper 下載的操作步驟,hyper-v批量管理工具的使用指南

    ? ? 咨詢行業(yè)在市場調(diào)研、數(shù)據(jù)分析和戰(zhàn)略規(guī)劃等方面,需要處理大量的市場數(shù)據(jù)和行業(yè)數(shù)據(jù)。批量虛擬機(jī)為咨詢行業(yè)帶來了高效的數(shù)據(jù)處理和分析能力。
    的頭像 發(fā)表于 02-07 15:09 ?784次閱讀
    hyper 下載,hyper 下載的操作步驟,hyper-v<b class='flag-5'>批量</b>管理工具的使用指南

    hyper v網(wǎng)絡(luò),hyper v網(wǎng)絡(luò)的操作步驟,hyper-v批量管理工具的使用指南

    ? ? 航空航天行業(yè)在飛行器設(shè)計、飛行模擬和衛(wèi)星數(shù)據(jù)分析等方面,對計算資源的要求極高。批量虛擬機(jī)為航空航天行業(yè)提供了關(guān)鍵的技術(shù)支撐。在飛行器設(shè)計階段,工程師可以利用批量虛擬機(jī)進(jìn)行復(fù)雜的
    的頭像 發(fā)表于 02-07 14:51 ?449次閱讀
    hyper v網(wǎng)絡(luò),hyper v網(wǎng)絡(luò)的操作步驟,hyper-v<b class='flag-5'>批量</b>管理工具的使用指南

    工業(yè)現(xiàn)場數(shù)據(jù)實時采集:解鎖工業(yè)智能化轉(zhuǎn)型的關(guān)鍵

    在當(dāng)今工業(yè)智能化轉(zhuǎn)型的浪潮中,工業(yè)現(xiàn)場數(shù)據(jù)實時采集的重要性不言而喻。它猶如企業(yè)運(yùn)營的 “慧眼”,為企業(yè)帶來全方位的顯著價值。
    的頭像 發(fā)表于 01-20 13:24 ?493次閱讀
    工業(yè)現(xiàn)場<b class='flag-5'>數(shù)據(jù)實</b>時采集:解鎖工業(yè)智能化轉(zhuǎn)型的關(guān)鍵

    ADS8674輸出數(shù)據(jù)有尖刺,實測時鐘時序和datasheet不符是怎么回事?

    14位ADC。使用verilog實現(xiàn)數(shù)據(jù)讀寫。SCLK時鐘7.5MHZ。CS和SDI按照data上操作。但實測ADC的SDO數(shù)據(jù)波形和data上不一致。data上說一個讀寫周期(CS兩個高脈沖
    發(fā)表于 12-10 06:15

    電桿傾斜監(jiān)測裝置 桿塔傾斜監(jiān)測裝置 支持數(shù)據(jù)實時讀取 精確預(yù)警

    TLKS-PMG-QX電桿傾斜監(jiān)測裝置的核心組件是雙軸傾角傳感器,該傳感器能夠精確測量桿塔在縱向和橫向兩個方向的傾斜角度。傳感器持續(xù)進(jìn)行數(shù)據(jù)采集,并將這些數(shù)據(jù)實時傳輸至監(jiān)測主機(jī)。監(jiān)測主機(jī)配備了高性能通信模塊,支持包括3G、4G、光纖和WiFi在內(nèi)的多種傳輸方式,將處理后的
    的頭像 發(fā)表于 11-05 11:05 ?723次閱讀
    電桿傾斜監(jiān)測裝置 桿塔傾斜監(jiān)測裝置 支持<b class='flag-5'>數(shù)據(jù)實</b>時讀取 精確預(yù)警

    請問PWM輸出的死區(qū)時間如何實測?

    有誰知道,PWM輸出的死區(qū)時間如何實測?
    發(fā)表于 10-31 08:03

    智芯公司雙模分鐘級數(shù)據(jù)采集創(chuàng)新方案取得顯著成果

    近日,從國網(wǎng)安徽電力與國網(wǎng)山東電力的現(xiàn)場工作人員處分別獲得反饋,智芯公司的雙模分鐘級采集創(chuàng)新方案在山東與安徽兩省的試驗驗證中均取得了顯著成果?!霸诎不帐〉脑囼烌炞C中,首次實現(xiàn)分鐘級數(shù)據(jù)采集,成功率
    的頭像 發(fā)表于 10-25 11:43 ?1268次閱讀

    企業(yè)級數(shù)據(jù)庫的配置和管理要求匯總

    企業(yè)級數(shù)據(jù)庫配置需高性能硬件支撐,包括服務(wù)器、存儲、網(wǎng)絡(luò)及電源冗余,選用穩(wěn)定DBMS與操作系統(tǒng),注重索引與查詢優(yōu)化。管理上,強(qiáng)調(diào)數(shù)據(jù)安全,實施加密、訪問控制與審計;確保高可用,配置容錯機(jī)制與備份恢復(fù);監(jiān)控調(diào)優(yōu)性能,規(guī)劃容量與擴(kuò)展性;追求易用性,簡化日常管理與維護(hù),確保
    的頭像 發(fā)表于 09-27 10:50 ?493次閱讀

    DNA計算機(jī)研究取得突破性進(jìn)展:PB級數(shù)據(jù)存儲與高效處理

    8月29日,科學(xué)界傳來振奮人心的消息,一項革命性的研究成果為實現(xiàn)全功能DNA計算機(jī)奠定了堅實基礎(chǔ)。研究團(tuán)隊成功開發(fā)出一種創(chuàng)新技術(shù),該技術(shù)不僅能在DNA中存儲驚人的PB級數(shù)據(jù),還能確保這些數(shù)據(jù)在數(shù)千乃至數(shù)百萬年內(nèi)保持完好,同時實現(xiàn)
    的頭像 發(fā)表于 08-29 16:29 ?932次閱讀

    天拓四方:工業(yè)級數(shù)據(jù)采集網(wǎng)關(guān)核心功能解析與應(yīng)用價值

    在數(shù)字化轉(zhuǎn)型浪潮中,工業(yè)4.0與智能制造的概念日益深入人心,而這一切的基石在于高效、準(zhǔn)確的數(shù)據(jù)采集與處理能力。工業(yè)級數(shù)據(jù)采集網(wǎng)關(guān)作為連接現(xiàn)場設(shè)備與云端或數(shù)據(jù)中心的關(guān)鍵橋梁,扮演著至關(guān)重要的角色。本文
    的頭像 發(fā)表于 07-23 16:11 ?587次閱讀