从队列

时间:2018-01-23 17:57:03

标签: c# .net database multithreading memory

假设我们有以下情况:

我们在数据库中有2-3个表,其中包含大量数据(让它为50-100ml的记录),我们想要添加2k个新记录。但在添加它们之前,我们需要在重复项上检查我们的数据库。因此,如果这个2k包含我们在数据库中的记录,我们应该忽略它们。但是为了找出新记录是否重复,我们需要来自两个表的信息(例如我们需要进行左连接)。 解决方案的想法是:一个任务或线程创建一个合适的数据进行比较,并将数据推送到队列中(按批次,而不是逐个记录),因此我们的队列(或concurrentQueue)是一个全局变量。第二个线程从队列中获取批处理并查看它。但是有一个问题 - 记忆力正在增长......

我在浏览批次后如何清理内存?

P.S。如果smb有另一个想法如何优化这个过程 - 请描述它......

1 个答案:

答案 0 :(得分:1)

这不是你问的问题的具体答案,因为你所问的,对我来说真的没有意义。

如果您要更新特定行:

INSERT INTO tablename(UniqueKey,columnname1,columnname2等...) VALUES(UniqueKeyValue,value1,value2等......) 在DUPLICATE KEY     UPDATE columnname1 = value1,columnname2 = value2等...

如果没有,只需忽略/删除更新语句。

这会很快,考虑到它会使用你想要独特的任何字段的唯一索引,只需要插入或更新。无需在单独的表格或任何内容中进行验证。