Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C在mysql中插入海量流数据#_C#_.net_Mysql_Multithreading_Insert - Fatal编程技术网

C# 使用C在mysql中插入海量流数据#

C# 使用C在mysql中插入海量流数据#,c#,.net,mysql,multithreading,insert,C#,.net,Mysql,Multithreading,Insert,我使用Mysql,需要插入大量数据。数据以5k行列表的形式流式传输到我的服务器。我需要插入超过3k的请求,这意味着3k请求*5k行=15000行 我所做的是使用这些线程创建线程和插入,因为数据在异步事件中以5k的数据包形式出现。数据响应是根据我的请求生成的 记住这种情况,最好的方法是什么 线程池用于线程管理或简单的多线程应用程序,在插入时线程将受益,因为我需要在单个表中插入(Innodb引擎)您可以在服务器上缓存传入的请求。在内存中保留一些缓冲数据,直到收到N个请求(稍后可以进行微调)。一旦获得

我使用Mysql,需要插入大量数据。数据以5k行列表的形式流式传输到我的服务器。我需要插入超过3k的请求,这意味着3k请求*5k行=15000行

我所做的是使用这些线程创建线程和插入,因为数据在异步事件中以5k的数据包形式出现。数据响应是根据我的请求生成的

记住这种情况,最好的方法是什么


线程池用于线程管理或简单的多线程应用程序,在插入时线程将受益,因为我需要在单个表中插入(Innodb引擎)

您可以在服务器上缓存传入的请求。在内存中保留一些缓冲数据,直到收到N个请求(稍后可以进行微调)。一旦获得这些数据,您就可以使用一些批量插入例程将数据刷新到MySql中。一般来说,一次大的插入比多次小的插入要快得多

您可以使用类在服务器上保存数据。这是一个线程安全的集合


此外,您可能需要根据时间使缓存过期。这将涵盖以下情况:您收到一些请求n您可以在服务器上缓存传入的请求。在内存中保留一些缓冲数据,直到收到N个请求(稍后可以进行微调)。一旦获得这些数据,您就可以使用一些批量插入例程将数据刷新到MySql中。一般来说,一次大的插入比多次小的插入要快得多

您可以使用类在服务器上保存数据。这是一个线程安全的集合


此外,您可能需要根据时间使缓存过期。这将涵盖以下情况:您收到一些请求n某些大容量插入不是很具体。ConcurrentBag仍然为+1。这是一些批量插入,因为OP没有指定用于数据层通信的内容:ORM、.NET MySql数据提供程序(或可能引用的驱动程序)、SQL或其他。我给了他一个搜索批量插入的提示。还有一件事,我从服务器得到的响应是异步响应。所以我想知道异步响应是自身线程还是在主UI线程上?同样,如果不是另一个线程,那么在响应上创建线程是否会增加插入?提前感谢一些批量插入不是很具体。ConcurrentBag仍然为+1。这是一些批量插入,因为OP没有指定用于数据层通信的内容:ORM、.NET MySql数据提供程序(或可能引用的驱动程序)、SQL或其他。我给了他一个搜索批量插入的提示。还有一件事,我从服务器得到的响应是异步响应。所以我想知道异步响应是自身线程还是在主UI线程上?同样,如果不是另一个线程,那么在响应上创建线程是否会增加插入?提前谢谢