1

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

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

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

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

4

1 回答 1

1

您可以在服务器上缓存传入的请求。将一些缓冲数据保留在内存中,直到收到N个请求(以后可以对其进行微调)。一旦你得到这些,你只需使用一些批量插入例程将数据刷新到 MySql 中。做一个大的插入通常比做许多小的插入要快得多。

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

此外,您可能需要根据时间使缓存过期。这将涵盖您收到一些请求n < N然后客户端停止发送数据的情况。无论如何,您都希望刷新它,而不是永远等到下一个即将到来的请求完全填满缓存。

于 2012-09-14T22:04:22.370 回答