대량 데이터 수집과 관련된 프로젝트를 작성 중입니다. 현재 저는 .NET Framework 4.8과 Mysql 패키지를 사용하여 연결을 시작하고 데이터베이스 서버에 데이터를 삽입하고 있습니다.
초당 약 400,000행을 삽입하게 됩니다. SQL 연결이 내 프로그램에 병목 현상을 일으킬까봐 걱정됩니다. SQL을 사용하여 다중 스레드 연결을 생성하고 소비자 대기열을 사용하여 데이터를 삽입하는지 알고 싶습니다. 더 빠르고 가치가 있습니까(장단점)?
내 직감으로는 더 빠를 것 같지만 스레드 오버헤드 측면에서 얼마나 많은 성능을 제공할지는 잘 모르겠습니다. 저는 SQL 전문가가 아니기 때문에 누군가가 여러 스레드에서 SQL에 대한 여러 연결을 여는 것의 장단점을 설명할 수 있다면 좋을 것입니다.
P粉3735968282024-03-31 00:42:10
루머, 의견, 소문, 사실, 버전 관련 벤치마크, 개인적인 경험 등...
다중 스레드는 처리량을 향상시킬 수 있지만 다음과 같은 제한 사항이 있습니다.
일괄 처리:
LOAD DATA
是一次从单个线程 INSERT
大量行的最快方法。但是,如果您包括将文件写入 LOAD
비용으로 인해 일괄 삽입보다 속도가 느려질 수 있습니다. INSERT
가 이어집니다. 그러나 특정 한도 또는 "수익률 감소"에 도달하면 "수백" 행으로 제한됩니다. LOAD DATA
)할 가치가 있습니다. (출처: 많은 INSERT
查询插入一行的速度的 10 倍。因此,它(或 LOAD DATA
다양한 시간 제한 테스트.)