五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Java多線(xiàn)程批量拆分List導(dǎo)入 1000萬(wàn) 數(shù)據(jù)庫(kù)!

2023-02-04 10:10 作者:網(wǎng)星軟件  | 我要投稿

Java多線(xiàn)程批量拆分List導(dǎo)入 1000萬(wàn) 數(shù)據(jù)庫(kù)!

一、前言

前兩天做了一個(gè)導(dǎo)入的功能,導(dǎo)入開(kāi)始的時(shí)候非常慢,導(dǎo)入2w條數(shù)據(jù)要1分多鐘,后來(lái)一點(diǎn)一點(diǎn)的優(yōu)化,從直接把list懟進(jìn)Mysql中,到分配把list導(dǎo)入Mysql中,到多線(xiàn)程把list導(dǎo)入Mysql中。時(shí)間是一點(diǎn)一點(diǎn)的變少了。非常的爽,最后變成了10s以?xún)?nèi)。下面就展示一下過(guò)程。

二、直接把list懟進(jìn)Mysql

使用mybatis的批量導(dǎo)入操作:

Mapper.xml

代碼說(shuō)明:

底層的mapper是通過(guò)逆向工程來(lái)生成的,批量插入如下,是拼接成類(lèi)似:insert into tb_enroll_student()values (),()…….();

這樣的缺點(diǎn)是,數(shù)據(jù)庫(kù)一般有一個(gè)默認(rèn)的設(shè)置,就是每次sql操作的數(shù)據(jù)不能超過(guò)4M。這樣插入,數(shù)據(jù)多的時(shí)候,數(shù)據(jù)庫(kù)會(huì)報(bào)錯(cuò)Packet for query is too large (6071393 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable.,雖然我們可以通過(guò)

類(lèi)似 修改 my.ini 加上?max_allowed_packet =67108864,67108864=64M,默認(rèn)大小4194304 也就是4M

修改完成之后要重啟mysql服務(wù),如果通過(guò)命令行修改就不用重啟mysql服務(wù)。

完成本次操作,但是我們不能保證項(xiàng)目單次最大的大小是多少,這樣是有弊端的。所以可以考慮進(jìn)行分組導(dǎo)入。

三、分組把list導(dǎo)入Mysql中

同樣適用mybatis批量插入,區(qū)別是對(duì)每次的導(dǎo)入進(jìn)行分組計(jì)算,然后分多次進(jìn)行導(dǎo)入:

代碼說(shuō)明:

這樣操作,可以避免上面的錯(cuò)誤,但是分多次插入,無(wú)形中就增加了操作實(shí)踐,很容易超時(shí)。所以這種方法還是不值得提倡的。

再次改進(jìn),使用多線(xiàn)程分批導(dǎo)入。

四、多線(xiàn)程分批導(dǎo)入Mysql

依然使用mybatis的批量導(dǎo)入,不同的是,根據(jù)線(xiàn)程數(shù)目進(jìn)行分組,然后再建立多線(xiàn)程池,進(jìn)行導(dǎo)入。

代碼說(shuō)明:

上面是通過(guò)應(yīng)用ExecutorService 建立了固定的線(xiàn)程數(shù),然后根據(jù)線(xiàn)程數(shù)目進(jìn)行分組,批量依次導(dǎo)入。一方面可以緩解數(shù)據(jù)庫(kù)的壓力,另一個(gè)面線(xiàn)程數(shù)目多了,一定程度會(huì)提高程序運(yùn)行的時(shí)間。缺點(diǎn)就是要看服務(wù)器的配置,如果配置好的話(huà)就可以開(kāi)多點(diǎn)線(xiàn)程,配置差的話(huà)就開(kāi)小點(diǎn)。

五、小結(jié)

通過(guò)使用這個(gè)操作真是不斷的提高了,項(xiàng)目使用技巧也是不錯(cuò)。加油~~ 多線(xiàn)程哦~~

Java多線(xiàn)程批量拆分List導(dǎo)入 1000萬(wàn) 數(shù)據(jù)庫(kù)!的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
娄烦县| 安丘市| 阳泉市| 射阳县| 武冈市| 香港| 盐池县| 扎鲁特旗| 六盘水市| 图们市| 米林县| 黑龙江省| 梁河县| 湘潭县| 开鲁县| 三穗县| 阿瓦提县| 永定县| 手游| 吴堡县| 蒲江县| 秭归县| 柳州市| 嵊州市| 扶余县| 达州市| 鄂托克前旗| 高淳县| 正定县| 铜鼓县| 南宫市| 厦门市| 襄垣县| 绍兴市| 花莲市| 安泽县| 莱西市| 吉林市| 桃江县| 和平县| 揭东县|