假设我们有以下情况:
我们在数据库中有2-3个表,其中包含大量数据(让它为50-100ml的记录),我们想要添加2k个新记录。但在添加它们之前,我们需要在重复项上检查我们的数据库。因此,如果这个2k包含我们在数据库中的记录,我们应该忽略它们。但是为了找出新记录是否重复,我们需要来自两个表的信息(例如我们需要进行左连接)。 解决方案的想法是:一个任务或线程创建一个合适的数据进行比较,并将数据推送到队列中(按批次,而不是逐个记录),因此我们的队列(或concurrentQueue)是一个全局变量。第二个线程从队列中获取批处理并查看它。但是有一个问题 - 记忆力正在增长......
我在浏览批次后如何清理内存?
P.S。如果smb有另一个想法如何优化这个过程 - 请描述它......
答案 0 :(得分:1)
这不是你问的问题的具体答案,因为你所问的,对我来说真的没有意义。
如果您要更新特定行:
INSERT INTO tablename(UniqueKey,columnname1,columnname2等...) VALUES(UniqueKeyValue,value1,value2等......) 在DUPLICATE KEY UPDATE columnname1 = value1,columnname2 = value2等...
如果没有,只需忽略/删除更新语句。
这会很快,考虑到它会使用你想要独特的任何字段的唯一索引,只需要插入或更新。无需在单独的表格或任何内容中进行验证。