[英]Is it worth to open multiple database connections for sql insertion
我正在編寫一個與海量數據獲取相關的項目。 目前我正在使用 .NET Framework 4.8 和 Mysql 包來啟動連接並將數據插入數據庫服務器。
我將插入大約 400, 000 行/秒。 我擔心 SQL 連接可能會成為我程序的瓶頸。 我想知道如果我用 sql 創建一個多線程連接並使用消費者隊列插入數據,它會更快,是否值得(優點和缺點)?
在我的直覺中,它會更快,但我不確定它在線程開銷方面可以提供多少性能。 我不是 SQL 專家,所以如果有人能解釋在多個線程上打開多個 SQL 連接的優缺點,那就太好了。
謠言、觀點、傳聞、事實、版本相關的基准、一些個人經驗等……
多線程將提高吞吐量,但有限制:
批處理:
LOAD DATA
是一次從單個線程INSERT
大量行的最快方法。 但是,如果您包括將文件寫入LOAD
的成本,這可能會使其實際上比批量插入慢。INSERT
緊隨其后。 但是,當它達到某個限制或“收益遞減”時,它會限制在“數百”行。INSERT
查詢插入一行的 10 倍。 所以它(或LOAD DATA
)值得用於高速攝取。 (來源:許多不同的定時測試。)數據來源:
加載數據后會發生什么? 當然,這不是一個只寫永不讀的表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.