mysql层面去重:mysql中如何不重复插入满足某些条件的重复的记录的问题 - BruceFighting - 博客园
数据库层面具体使用哪个sql语句去重,根据业务情况来定。
1.Excel批量导入10w数据量,多用户同时导入,2个字段相同去重(不包括主键)
数据库连接池默认开启连接50,最大100
由于mybatis有一次sql的大小限制或者数据库也有大小限制,因此可以将其分为多个list集合,使用ExcutorService、callable、futuretask、countdownlatch(用于计算分段list集合个数),多线程并发插入数据。程序方面对Excel中的数据去重:将数据封装为对象,对象重写equals方法和hashCode方法,这里equals就只对那2个字段进行比较即可,并将对象放入set中去重。数据库方面去重:利用数据库设置联合唯一索引。然后通过insert ignore into语句去执行。insert ignore into:重复或语句错误报错都会被忽略(根据主键和唯一索引判断重复)
2.Excel批量导入10w数据量,多用户同时导入,除去主键其余字段相同去重
程序方面的去重与上一点大致相同。区别是equals和hashCode需要判断全部的属性字段。
以上也可以考虑用redis的zset去重,但是会增加网络延时问题,以及每次都要以网络形式分批去读取redis中的数据,并且反序列化,会增加一定的网络不及时响应等问题。如果程序没有考虑从缓存中读取数据,使用redis去重存储数据,是得不偿失的。如果本身系统查数据都

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



