在游戏行业中,经常会遇到删除“死号”的需求;我们的用户id是自增生成的,在删号程序中,会遇到与数据库断开连接,但还在运行的SQL语句;
对于自增的字段进行行记录的删除,会出现“断裂带”的情况,对于这种无法避免的情况,个人建议在数据维护过程中,analyze table 防止有过多数据存储的碎片;
对于新的自增id,不会复用老的id;下面列出不同存储引擎对auto_increment的支持:
对于 innodb,myisam,memory 存储引擎;
共同点:
1、序列都是单调递增;
2、编号依次递增,不会复用曾经删除的id
3、都可以设置自增ID的初始值;
4、truncate table之后 计数值从1开始;
5、表中均只能有一个字段是自增字段;
不同点:
MYISAM支持 复合索引里含有自增序列;innodb与memory都不支持;
对于自增的两个参数(对于多master情况,应多注意这两个参数):
auto_increment_offset:确定自增字段的起点值
auto_increment_increment:值变化的增量
如果auto_increment_offset的值大于auto_increment_increment的值,则auto_increment_offset的值被忽略。
本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/1213939,如需转载请自行联系原作者