在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)/ Mysql:對(duì)同一表進(jìn)行大量數(shù)據(jù)插入,為何多線程插入比單線程插入快?

Mysql:對(duì)同一表進(jìn)行大量數(shù)據(jù)插入,為何多線程插入比單線程插入快?

http://blog.csdn.net/javastar...
https://www.cnblogs.com/fanwe...

看這些文章,對(duì)一同mysql數(shù)據(jù)庫(kù)的同一表進(jìn)行大量數(shù)據(jù)插入
多線程插入比單線程插入快

我的感覺(jué)是,線程對(duì)同一個(gè)表的寫,應(yīng)該是獨(dú)占的吧
否則如何檢查唯一索引
自增長(zhǎng) id的情況下mysql如何確定主鍵id?

假如獨(dú)占
為何多線程插入比單線程插入快?

回答
編輯回答
情已空

多線程只是針對(duì)CPU來(lái)說(shuō)的吧,真正的IO還是一樣順序?qū)懭氲?,不可能并發(fā)。

2017年1月30日 17:26
編輯回答
糖豆豆

我的理解是,mysql插入數(shù)據(jù)在寫階段是獨(dú)占的,但是插入一條數(shù)據(jù)仍然需要解析、計(jì)算、最后才進(jìn)行寫處理,比如要給每一條記錄分配自增id,校驗(yàn)主鍵唯一鍵屬性,或者其他一些邏輯處理,都是需要計(jì)算的,而多線程是利用了多cpu同時(shí)計(jì)算解析的能力,所以對(duì)mysql表來(lái)說(shuō),只有在最后的寫階段才是獨(dú)占的,這就節(jié)省了大部分時(shí)間了

2017年5月1日 06:55
編輯回答
九年囚

批量插入是個(gè)IO密集型的操作,這種類型的一般用多線程都能提升一定的效率,因?yàn)閍線程插入阻塞的時(shí)候,b線程就可以準(zhǔn)備數(shù)據(jù)發(fā)起插入請(qǐng)求了,b阻塞的時(shí)候,c又可以準(zhǔn)備發(fā)起請(qǐng)求......
這樣流水線操作肯定比一個(gè)線程操作快一些啊。
想象一下一個(gè)屋子有容納一個(gè)人的進(jìn)口和出口,有一定量的東西需要從屋外搬到屋內(nèi),一個(gè)人從入口搬進(jìn)去再?gòu)某隹诔鰜?lái)這樣循環(huán)往復(fù)快呢?還是一群人排著隊(duì)流水線搬循環(huán)往復(fù)快?

2017年9月27日 23:52
編輯回答
笨小蛋

線程這個(gè)用詞用在這里可能會(huì)產(chǎn)生一些歧義。官方的說(shuō)法是:操作(operations)。也就是說(shuō)把【多次的單一詞條插入操作】整合成為【一次的多詞條插入操作】這個(gè)是提高Insert速度的基礎(chǔ)。原因很簡(jiǎn)單,在數(shù)據(jù)里做插入操作的時(shí)候,整體時(shí)間的分配是這樣的:

  1. 鏈接耗時(shí) (30%)
  2. 發(fā)送query到服務(wù)器 (20%)
  3. 解析query (20%)
  4. 插入操作 (10% * 詞條數(shù)目)
  5. 插入index (10% * Index的數(shù)目)
  6. 關(guān)閉鏈接 (10%)

上面的百分比是官方給出的近似比例。從這里可以看出來(lái),真正耗時(shí)的不是操作,而是鏈接,解析的過(guò)程,這也就是為什么【多次的單一詞條插入操作】的耗時(shí)要比 【一次的多詞條插入操作】高的根本原因。

官方鏈接

2018年9月6日 20:56
編輯回答
拼未來(lái)

這是一個(gè)好問(wèn)題,同問(wèn)

2017年4月24日 19:45