我正在寫一個與海量資料獲取相關的項目。 目前我使用.NET Framework 4.8和Mysql包來啟動連線並向資料庫伺服器插入資料。
我將插入大約 400, 000 行/秒。 我擔心 SQL 連線可能成為我的程式的瓶頸。 我想知道如果我使用 sql 創建多線程連接並使用消費者隊列插入數據,它會更快並且值得嗎(優點和缺點)?
在我的直覺中,它會更快,但我不確定它可以在執行緒開銷方面提供多少效能。我不是 SQL 專家,因此如果有人能夠解釋在多個執行緒上開啟與 SQL 的多個連線的優缺點,那就太好了。
P粉3735968282024-03-31 00:42:10
謠言、觀點、道聽途說、事實、版本相關的基準、一些個人經驗等...
多執行緒可以提高吞吐量,但也有限制:
批次:
LOAD DATA
是一次從單一執行緒 INSERT
大量行的最快方法。但是,如果您包含將檔案寫入 LOAD
的成本,則可能會使其比批次插入慢。 INSERT
緊跟在後。但當達到某個限製或「收益遞減」時,它的上限為「數百」行。 INSERT
查詢插入一行的速度的 10 倍。因此,它(或 LOAD DATA
)值得用於高速攝取。 (來源:許多不同的定時測試。)資料來源:
載入資料後會發生什麼事?當然,這不是一個只寫不讀的表。
PARTITIONing
很少有用,除了最終清除舊資料之外。請參閱分割區