Heim > Fragen und Antworten > Hauptteil
Ich schreibe ein Projekt im Zusammenhang mit der Erfassung massiver Daten. Derzeit verwende ich .NET Framework 4.8 und das MySQL-Paket, um Verbindungen zu initiieren und Daten in den Datenbankserver einzufügen.
Ich werde etwa 400.000 Zeilen pro Sekunde einfügen. Ich befürchte, dass die SQL-Verbindung zu einem Engpass für mein Programm werden könnte. Ich möchte wissen, ob es schneller ist und sich lohnt (Vor- und Nachteile), wenn ich SQL zum Erstellen einer Multithread-Verbindung verwende und die Verbraucherwarteschlange zum Einfügen von Daten verwende.
In meinem Bauch wäre es schneller, aber ich bin mir nicht sicher, wie viel Leistung es in Bezug auf den Thread-Overhead bieten würde. Ich bin kein SQL-Experte, daher wäre es großartig, wenn jemand die Vor- und Nachteile des Öffnens mehrerer SQL-Verbindungen in mehreren Threads erklären könnte.
P粉3735968282024-03-31 00:42:10
谣言、观点、道听途说、事实、版本相关的基准、一些个人经验等......
多线程可以提高吞吐量,但也有限制:
批处理:
LOAD DATA
是一次从单个线程 INSERT
大量行的最快方法。但是,如果您包括将文件写入 LOAD
的成本,则可能会使其比批量插入慢。INSERT
紧随其后。但当达到某个限制或“收益递减”时,它的上限为“数百”行。INSERT
查询插入一行的速度的 10 倍。因此,它(或 LOAD DATA
)值得用于高速摄取。 (来源:许多不同的定时测试。)数据来源:
加载数据后会发生什么?当然,这不是一个只写不读的表。
PARTITIONing
很少有用,除了最终清除旧数据之外。请参阅分区