我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql数据自增ID为2的解决方案

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql数据自增ID为2的解决方案

mysql数据自增ID为2问题

查看配置

show variables like '%increment%';

如果:

auto_increment_increment=2

执行:

set @@global.auto_increment_increment = 1;
set @@auto_increment_increment =1;

如果:

auto_increment_offset=2

执行:

set @@global.auto_increment_offset =1;
set @@auto_increment_offset =1;

mysql自增id理解

1. 什么是自增id

自增ID是在设计表时如果将id字段的值设置为自增的形式也就是AUTO_INCREMENT,那么当插入一行数据时就无需指定id,数据表会根据前一个id值+1进行填充。

指定了AUTO_INCREMENT的列必须要建索引,一般把ID作为主键,这样系统会自动为ID建立索引。

2. 自增id的好处

(1)增加记录时,可以不用指定id字段,不用担心主键重复问题。

(2)数据库自动编号,速度快,而且是增量增长,按顺序存放,对于检索非常有利;

(3)数字型,占用索引空间小,范围查找与排序友好,在程序中传递也方便;

(4)避免像UUID这样随机字符串带来的页分裂问题等

页分裂问题: 

 一页总要被存满,然后新开一页继续,这种行为被称作页分裂。何时开辟新的页,mysql规定了一个分裂因子,达到页存储空间的15/16则存到下一页。页分裂的存在可能极大影响性能维护索引的性能。通常提倡的是,设定一个无意义的整数自增索引,有利于索引存储 

如果非自增或不是整数索引,如非自增整数、类似MD5的字符串,以他们作为索引值时,因为待插入的下一条数据的值不一定比上一条大,甚至比当前页所有值都小,需要跑到前几页去比较而找到合适位置,InnoDB无法简单的把新行插入到上一行后面,而找到并插入索引后,可能导致该页达到分裂因子阀值,需要页分裂,进一步导致后面所有的索引页的分裂和排序,数据量小也许没什么问题,数据量大的话可能会浪费大量时间,产生许多碎片。

3. 自增id的坏处

(1) 不具有连续性,表中auto_increment最大值被删除,将不会被重用。就是说会跳号(如果设定的auto_increment_increment是1,那么下一次插入的id值将会从被删除的最大值算起,也就是被删除的最大值+1)

(2)历史数据表的主键id会与数据表的id重复,两张自增id做主键的表合并时,id会有冲突,但如果各自的id还关联了其他表,这就很不好操作。

(3) 很难处理分布式存储的数据表,尤其是需要合并表的情况下

(4) 在系统集成或割接时,如果新旧系统主键不同是数字型就会导致修改主键数据类型,这也会导致其它有外键关联的表的修改,后果同样很严重;

4. 当自增id用完了怎么办?

自增id的数据上限和受主键类型的影响,当自增id超过最大值,就会提示主键冲突,所以建议根据业务需求设置主键数据类型,如果超过int 数值范围,可以考虑bigint类型(2^64-1)。

当隐性的row_id用完,数据库不会产生错误,它会重新从0开始覆盖之前的数据,这样会导致数据丢失。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql数据自增ID为2的解决方案

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql数据自增ID为2的解决方案

目录mysql数据自增ID为2问题mysql自增id理解1. 什么是自增id2php. 自增id的好处3. 自增id的坏处4. 当自增id用完了怎么办?总结mysql数据自增ID为2问题查看配置show variables like '
2022-12-27

Mysql数据库自增id、uuid与雪花id详解

目录概念介绍三种主键聚簇索引与非聚簇索引自增iduuid雪花id与应用总结概念介绍三种主键自增id :1 2 3 4 5……uuid :UUID是Universally Unique Identifier的
2023-02-28

MySQL的自增ID(主键) 用完了的解决方法

在 MySQL 中用很多类型的自增 ID,每个自增 ID 都设置了初始值。一般情况下初始值都是从 0 开始,然后按照一定的步长增加(一般是自增 1)。一般情况下,我们都是用int(11)来作为数据表的自增 ID,在 MySQL 中只要定义了
2022-05-10

详解mysql插入数据后返回自增ID的七种方法

引言mysql 和 oracle 插入的时候有一个很大的区别是:oracle 支持序列做 id;mysql 本身有一个列可以做自增长字段。mysql 在插入一条数据后,如何能获得到这个自增 id 的值呢? 一:使用 last_insert_
2022-05-12

mysql创建表设置表主键id从1开始自增的解决方案

目录一.问题描述二.解决方案1.实现步骤2.演示总结一.问题描述当我们在做项目的时候,创建一张用户表,如何让该表的主键id从0开始自增?网上搜索了很多解决方案,最后发现了一种方法必实现且有效的方案。下面就来介绍实现方法二.解决方案1.
2023-04-19

MySQL数据库自增主键的间隔不为1的解决方式

目录mysql数据库自增主键的间隔不为1fvt测试环境数据库配置pr类生产环境数据库配置SQL语句中的auto_increment=1是什么意思?举个简单例子MySQL数据库自增主键的间隔不为1今天新版本上线的时候,遇到了一个这样的问题,
2022-12-27

MySQL删除数据后自增主键ID不连贯问题及解决

目录mysql删Bxelo除数据后自增主键ID不连贯下列代码以wat编程er表中的id列为例然后重新生成id列下一步就是重新设置为主键+自增总结MySQL删除数据后自增主键ID不连贯首先我们需要取消id的自增和主键下列代码以water表
MySQL删除数据后自增主键ID不连贯问题及解决
2024-09-08

如何解决mybatis-plus添加数据时id自增问题

小编给大家分享一下如何解决mybatis-plus添加数据时id自增问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!mybatis-plus添加数据时id自增问题mybatis-plus插入数据,id自增列变的很长.比如
2023-06-26

Mysql innoDB修改自增id起始数的方法步骤

目录一. 建表的时候指定起始数二. 建表完成后修改自增id一. 建表的时候指定起始数CREATE TABLE `t_test` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`code` varchar
2023-03-21

Mysql innoDB修改自增id起始数的方法步骤

本文主要介绍了Mysql innoDB修改自增id起始数的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧<BR>
2023-03-21

如何解决Mysql更新自增主键id遇到的问题

这篇文章主要为大家展示了“如何解决Mysql更新自增主键id遇到的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决Mysql更新自增主键id遇到的问题”这篇文章吧。为什么要更新自增id
2023-06-21

编程热搜

目录