当前位置:   article > 正文

频繁删除和插入会导致自增id用完/溢出的问题_频繁删增导致数据库自增id不够

频繁删增导致数据库自增id不够

场景

有一张中间表,用于定时同步远程接口数据,比如每天凌晨从接口拿到数据并写入到中间表。

思路

插入方法有2种:
(1)每次执行前删除中间表全部数据,然后从接口拿数据直接插入。
(2)执行前不对中间表操作,拿到接口数据后遍历数据,当该数据已存在数据库中就根据id更新字段,不存在那么插入到数据库。

第一种方法

第一种方法:正常情况下id都会设置为int类型自增长,那么删除数据后id并不会重置,那么频繁删除和插入大量数据就会导致id最终用完。int类型最大值是4294967295,对于一个频繁插入删除数据的表来说,是可能会被用完的。

如果非要采用这种方法,那么就需要手动插入id,但是要取消id的自增长,否则会报错,或者代码中插入前执行SET IDENTITY_INSERT 你的表名 ON;,例如下面java代码

recordset.executeUpdate("SET IDENTITY_INSERT 你的表名 ON;" +
				"insert into 你的表名(id,name) values(?,?);" +
				"SET IDENTITY_INSERT 你的表名 OFF;",
		i,"");
  • 1
  • 2
  • 3
  • 4

第二种方法

第二种方法:这种方法是比较推荐的。 因为第一种方法的删除本身就是一个敏感操作,我们原则上要尽量不做删除,只做更新。

这种方法需要考虑一点,就是如果接口数据没有该记录,而中间表中有该记录,那么是否要删除中间表的这条记录呢。根据业务情况来定,但是正常业务情况下不会删除。例如接口返回的是公司的人员数据,那么只需要设置人员的离职状态即可,正常情况下接口那边是不会直接删除人员的。因为我们只做更新,将人员的状态更新为接口的离职就可以了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/635360
推荐阅读
相关标签
  

闽ICP备14008679号