国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

建立多個(gè)資料庫(kù)連線(xiàn)進(jìn)行SQL插入有好處嗎?
P粉585541766
P粉585541766 2024-03-30 08:39:46
0
1
497

我正在寫(xiě)一個(gè)與海量資料獲取相關(guān)的項(xiàng)目。 目前我使用.NET Framework 4.8和Mysql包來(lái)啟動(dòng)連線(xiàn)並向資料庫(kù)伺服器插入資料。

我將插入大約 400, 000 行/秒。 我擔(dān)心 SQL 連線(xiàn)可能成為我的程式的瓶頸。 我想知道如果我使用 sql 創(chuàng)建多線(xiàn)程連接並使用消費(fèi)者隊(duì)列插入數(shù)據(jù),它會(huì)更快並且值得嗎(優(yōu)點(diǎn)和缺點(diǎn))?

在我的直覺(jué)中,它會(huì)更快,但我不確定它可以在執(zhí)行緒開(kāi)銷(xiāo)方面提供多少效能。我不是 SQL 專(zhuān)家,因此如果有人能夠解釋在多個(gè)執(zhí)行緒上開(kāi)啟與 SQL 的多個(gè)連線(xiàn)的優(yōu)缺點(diǎn),那就太好了。

P粉585541766
P粉585541766

全部回覆(1)
P粉373596828

謠言、觀點(diǎn)、道聽(tīng)途說(shuō)、事實(shí)、版本相關(guān)的基準(zhǔn)、一些個(gè)人經(jīng)驗(yàn)等...

多執(zhí)行緒可以提高吞吐量,但也有限制:

  • 吞吐量上限約為理論極限的一半。 (你的“一定百分比”)(這是基於多線(xiàn)程包的基準(zhǔn);我忘記了名字;那是十年前的事了。)
  • 多個(gè)執(zhí)行緒將在互斥體和其他必要的鎖定機(jī)制上相互競(jìng)爭(zhēng)。
  • 從大約 5.7 開(kāi)始,64 個(gè)執(zhí)行緒是 MySQL 的多執(zhí)行緒限制;超過(guò)這個(gè)值,吞吐量就會(huì)停滯甚至下降。 (來(lái)源:許多 Oracle 基準(zhǔn)測(cè)試都吹噓一個(gè)版本比前一個(gè)版本好得多。)(同時(shí),每個(gè)執(zhí)行緒的延遲都達(dá)到了頂峰。)
  • 如果可能,每個(gè)執(zhí)行緒都應(yīng)批次處理資料。

批次:

  • LOAD DATA 是一次從單一執(zhí)行緒 INSERT 大量行的最快方法。但是,如果您包含將檔案寫(xiě)入 LOAD 的成本,則可能會(huì)使其比批次插入慢。
  • 批次 INSERT 緊跟在後。但當(dāng)達(dá)到某個(gè)限製或「收益遞減」時(shí),它的上限為「數(shù)百」行。
  • 批次插入的速度是每次 INSERT 查詢(xún)插入一行的速度的 10 倍。因此,它(或 LOAD DATA)值得用於高速攝取。 (來(lái)源:許多不同的定時(shí)測(cè)試。)

資料來(lái)源:

  • 某些資料來(lái)源必須一次只傳送一行(例如,每 N 秒從車(chē)輛發(fā)出感測(cè)器資料)。這需要某個(gè)中間層對(duì)資料進(jìn)行批次處理。
  • 收集資料的討論:http://mysql.rjweb.org/doc.php /staging_table

載入資料後會(huì)發(fā)生什麼事?當(dāng)然,這不是一個(gè)只寫(xiě)不讀的表。

  • 標(biāo)準(zhǔn)化對(duì)於縮小磁碟佔(zhàn)用空間很有用;最好分批進(jìn)行。請(qǐng)參閱標(biāo)準(zhǔn)化
  • PARTITIONing 很少有用,除了最終清除舊資料之外。請(qǐng)參閱分割區(qū)
  • 巨大的「事實(shí)」表很難搜尋;考慮在攝取資料時(shí)建立摘要資料:匯總表
  • 甚至可以進(jìn)行上述處理,然後丟掉原始資料。聽(tīng)起來(lái)您每天可能會(huì)取得一 TB 的資料。
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板