chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

SpringBoot利用ThreadPoolTaskExecutor批量插入百萬(wàn)級(jí)數(shù)據(jù)實(shí)測(cè)!

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

掃碼添加小助手

加入工程師交流群


前言

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

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

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

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

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

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

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

spring容器注入線程池bean對(duì)象

@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);
//配置隊(duì)列大小
executor.setQueueCapacity(queueCapacity);
//配置線程池中的線程的名稱前綴
executor.setThreadNamePrefix(namePrefix);
// rejection-policy:當(dāng)pool已經(jīng)達(dá)到max size的時(shí)候,如何處理新任務(wù)
// CALLER_RUNS:不在新線程中執(zhí)行任務(wù),而是有調(diào)用者所在的線程來(lái)執(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)鍵,無(wú)論上面程序是否異常必須執(zhí)行countDown,否則await無(wú)法釋放
}
}
}

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

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

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

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

多線程 測(cè)試 2000003 耗時(shí)如下:耗時(shí)1.67分鐘

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

本次開(kāi)啟30個(gè)線程,截圖如下:

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

單線程測(cè)試2000003 耗時(shí)如下:耗時(shí)5.75分鐘

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

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

根據(jù)id分組,查看是否有id重復(fù)的數(shù)據(jù),通過(guò)sql語(yǔ)句檢查,沒(méi)有發(fā)現(xiàn)重復(fù)入庫(kù)的問(wèn)題

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

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

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

測(cè)試結(jié)果

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

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

總結(jié)

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

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

附:測(cè)試電腦配置

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

審核編輯 :李倩


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

    關(guān)注

    1

    文章

    789

    瀏覽量

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

    關(guān)注

    0

    文章

    279

    瀏覽量

    20907
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    341

    瀏覽量

    15762
  • SpringBoot
    +關(guān)注

    關(guān)注

    0

    文章

    177

    瀏覽量

    624

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    如何使用SpringBoot、Vue2.0、MySQL開(kāi)發(fā)一套云診所系統(tǒng)?

    SpringBoot是Java領(lǐng)域非常流行的快速開(kāi)發(fā)框架,提供了豐富的生態(tài)和自動(dòng)化配置,適合構(gòu)建微服務(wù)和單體應(yīng)用。 它可以很好地處理業(yè)務(wù)邏輯、數(shù)據(jù)持久化、安全性(Spring Security)和API接口
    的頭像 發(fā)表于 11-27 16:02 ?99次閱讀
    如何使用<b class='flag-5'>SpringBoot</b>、Vue2.0、MySQL開(kāi)發(fā)一套云診所系統(tǒng)?

    10G通信信號(hào)衰減難題破解:沃虎片式網(wǎng)絡(luò)變壓器實(shí)測(cè)案例

    數(shù)據(jù)顯示:插入損耗從傳統(tǒng)產(chǎn)品的0.8dB降至0.48dB,衰減幅度降低40%,50米傳輸后信號(hào)完整性仍保持在標(biāo)準(zhǔn)范圍內(nèi);批量生產(chǎn)的一致性偏差控制在±3%,成品率提升至95%以上。關(guān)鍵原因在于自動(dòng)化
    發(fā)表于 11-27 10:09

    MR100A工業(yè)4G路由器模塊深度評(píng)測(cè):4G聯(lián)網(wǎng)與工業(yè)級(jí)數(shù)據(jù)透?jìng)鞯耐昝廊诤?/a>

    在工業(yè)物聯(lián)網(wǎng)與遠(yuǎn)程監(jiān)控需求激增的當(dāng)下,穩(wěn)定高效的網(wǎng)絡(luò)連接成為設(shè)備智能化升級(jí)的核心。MR100A路由模塊憑借4G全網(wǎng)通接入、工業(yè)級(jí)數(shù)據(jù)透?jìng)髂芰办`活的雙模設(shè)計(jì),成為中小型物聯(lián)網(wǎng)項(xiàng)目的理想選擇。本文將從
    的頭像 發(fā)表于 11-20 18:49 ?57次閱讀
    MR100A工業(yè)4G路由器模塊深度評(píng)測(cè):4G聯(lián)網(wǎng)與工業(yè)<b class='flag-5'>級(jí)數(shù)據(jù)</b>透?jìng)鞯耐昝廊诤? />    </a>
</div>                              <div   id=

    Flutter 移動(dòng)端開(kāi)發(fā):集成淘寶 API 實(shí)現(xiàn)商品數(shù)據(jù)實(shí)時(shí)展示 APP

    在電商蓬勃發(fā)展的當(dāng)下,移動(dòng)端購(gòu)物成為主流趨勢(shì)。對(duì)于開(kāi)發(fā)者而言,利用 Flutter 構(gòu)建一個(gè)能夠?qū)崟r(shí)展示淘寶商品數(shù)據(jù)的 APP,既能滿足用戶便捷獲取商品信息的需求,也能為電商業(yè)務(wù)拓展新的渠道
    的頭像 發(fā)表于 11-13 09:36 ?153次閱讀

    偉創(chuàng)力重磅發(fā)布全球首款面向千兆瓦級(jí)數(shù)據(jù)中心的AI基礎(chǔ)設(shè)施平臺(tái)

    偉創(chuàng)力重磅發(fā)布全球首款面向千兆瓦級(jí)數(shù)據(jù)中心的AI基礎(chǔ)設(shè)施平臺(tái),平臺(tái)集成了電源和冷卻產(chǎn)品、計(jì)算能力和服務(wù),專為AI和高性能計(jì)算而設(shè)計(jì),幫助數(shù)據(jù)中心運(yùn)營(yíng)商將部署速度提升高達(dá)30%,大幅降低風(fēng)險(xiǎn),輕松應(yīng)對(duì)電力、散熱和規(guī)模難題。
    的頭像 發(fā)表于 10-23 15:08 ?573次閱讀

    掌握NFC標(biāo)簽批量讀取,輕松提升數(shù)據(jù)采集效率!

    NFC批量讀取技術(shù)解決傳統(tǒng)單點(diǎn)讀取效率低、成本高、易出錯(cuò)等問(wèn)題,實(shí)現(xiàn)高效、自動(dòng)化數(shù)據(jù)采集。
    的頭像 發(fā)表于 09-23 16:11 ?351次閱讀
    掌握NFC標(biāo)簽<b class='flag-5'>批量</b>讀取,輕松提升<b class='flag-5'>數(shù)據(jù)</b>采集效率!

    RK3506開(kāi)發(fā)板Xenomai內(nèi)核RT-Linux實(shí)時(shí)性系統(tǒng)適配教程與性能實(shí)測(cè)實(shí)測(cè)僅7μs穩(wěn)定延時(shí)

    本文基于觸覺(jué)智能RK3506核心板/開(kāi)發(fā)板,介紹Xenomai內(nèi)核RT-Linux實(shí)時(shí)性系統(tǒng)適配,并附性能實(shí)測(cè)。簡(jiǎn)介與實(shí)測(cè)數(shù)據(jù)Xenomai簡(jiǎn)介XEnomai是一個(gè)實(shí)時(shí)子系統(tǒng),可與Linux內(nèi)核緊密集成,為應(yīng)用程序提供可預(yù)測(cè)的響
    的頭像 發(fā)表于 09-18 14:21 ?846次閱讀
    RK3506開(kāi)發(fā)板Xenomai內(nèi)核RT-Linux實(shí)時(shí)性系統(tǒng)適配教程與性能<b class='flag-5'>實(shí)測(cè)</b>,<b class='flag-5'>實(shí)測(cè)</b>僅7μs穩(wěn)定延時(shí)

    積分球儀器數(shù)據(jù)實(shí)測(cè)

    儀器儀表
    jf_90915507
    發(fā)布于 :2025年08月07日 10:20:58

    復(fù)雜裝備研發(fā)設(shè)計(jì)中利用數(shù)據(jù)實(shí)現(xiàn)大規(guī)模個(gè)性化定制

    在復(fù)雜裝備研發(fā)設(shè)計(jì)中,利用數(shù)據(jù)實(shí)現(xiàn)大規(guī)模個(gè)性化定制已成為提升企業(yè)競(jìng)爭(zhēng)力、滿足多樣化市場(chǎng)需求的關(guān)鍵路徑。其核心在于通過(guò)數(shù)據(jù)驅(qū)動(dòng)的個(gè)性化需求識(shí)別、模塊化設(shè)計(jì)、柔性生產(chǎn)、智能決策及閉環(huán)反饋,實(shí)現(xiàn)高標(biāo)準(zhǔn)滿足
    的頭像 發(fā)表于 08-06 17:17 ?539次閱讀

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

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

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

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

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

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

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

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

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

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

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

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