MySQL auto_increment问题

auto_increment 问题:

https://yq.aliyun.com/articles/59263?spm=5176.8091938.0.0.bjzoFN

https://dev.mysql.com/doc/refman/5.7/en/innodb-auto-increment-handling.html

导致auto_increment变小的几种情况:

参考: http://dev.mysql.com/doc/refman/5.7/en/innodb-auto-increment-handling.html

1、 alter table xx auto_increment = yy;

2、 truncate table

3、 restart mysql

第三种的复现方法:

一张刚创建的innoDB表,目前自增是1.

插入3条记录后,auto_increment=4.

然后再删除掉这三条记录,这时候的auto_increment=4 没变

但是如果我们关闭MySQL,当MySQL再次起来的时候,会发现auto_increment值从4,变成1

【第三种情况,在mysql8.0里面修复了】

原文地址:http://blog.51cto.com/lee90/2140533

时间: 2024-08-04 05:47:42

MySQL auto_increment问题的相关文章

MySQL auto increment - the MySQL auto_increment attribute

MySQL FAQ: How do I define a MySQL auto increment field? Here's an example of the way I normally create a MySQL auto increment (auto_increment) field: create table pizzas ( id int auto_increment not null, name varchar(32) not null, primary key (id) )

MySQL Auto_Increment属性应用

我们经常要用到唯一编号,以标识记录.在MySQL中可通过数据列的AUTO_INCREMENT属性来自动生成.MySQL支持多种数据表,每种数据表的自增属性都有差异,这里将介绍各种数据表里的数据列自增属性. 1 用法: CREATE TABLE test ( id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, username VARCHAR(15) NOT NULL )AUTO_INCREMENT = 100; 可在建表时可用"AUTO_IN

谨慎使用MySQL auto_increment

在使用MySQL中,经常会在表中建立一个自增的ID字段,利用自增ID能够快速建立索引,也是MySQL官方比较推荐的一种方式,但是,这种方式在大量数据且配置主从时,可能会出现由于自增ID导致同步失败的情况 首先需要了解一点 Mysql主从同步主要通过bin log来同步,而MySQl中bin log最大值为1G, 这种情况触发条件如下: 1.数据库配置主从同步 2.表存在自增ID 3.表数据量大, 如果在主上执行insert into-select-类SQL,该SQL事物超过1G时,MySQL会将

MySQL auto_increment的坑

背景: Innodb引擎使用B_tree结构保存表数据,这样就需要一个唯一键表示每一行记录(比如二级索引记录引用). Innodb表定义中处理主键的逻辑是: 1.如果表定义了主键,就使用主键唯一定位一条记录 2.如果没有定义主键,Innodb就生成一个全局唯一的rowid来定位一条记录 auto_increment的由来: 1.Innodb强烈推荐在设计表中自定义一个主键,因为rowid是全局唯一的,所以如果有很多表没有定义主键,就会在生成rowid上产生争用. /* Dictionary sy

验证:mysql AUTO_INCREMENT 默认值是1

用mongodb时,有些字段需要做自增,而且是用二十进制字母表示(使用a-t对应0-19),做了一个_auto_increment字段用来保存,但是应该从0开始还是从1开始呢? 和mysql保持一致便于维护.所以试了一下mysql,AUTO_INCREMENT是从1开始的.看来a就不能用了,从b开始,比如b.c……s.t.ba.bb……bs.bt. 代码: create table users(id int(10) unsigned not null auto_increment primary

MySQL AUTO_INCREMENT 简介

可使用复合索引在同一个数据表里创建多个相互独立的自增序列,具体做法是这样的:为数据表创建一个由多个数据列组成的PRIMARY KEY OR UNIQUE索引,并把AUTO_INCREMENT数据列包括在这个索引里作为它的最后一个数据列.这样,这个复合索引里,前面的那些数据列每构成一种独一无二的组合,最末尾的AUTO_INCREMENT数据列就会生成一个与该组合相对应的序列编号. 我们经常要用到唯一编号,以标识记录.在MySQL中可通过数据列的AUTO_INCREMENT属性来自动生成.MySQL

MYSQL auto_increment 、default 关键字

1. auto_increment: innoDB 中 表中只可以有一个列是auto_increment的,这个列还一定要是索引. create table T(X int auto_increment primary key,Y int);               --  对 create table T(X int auto_increment,Y int ,index ix_A (X))            --  错         用了auto_increment就可以这样加索引

MySQL auto_increment实现

http://www.cnblogs.com/xpchild/p/3825309.html 运维的时候,经常遇到auto_increment的疑惑: 机器异常crash,重启后id回退的问题 性能考虑,每次获取肯定不会持久化,内存中取值,statement复制如何保证主备一致 id的取值受binlog的保护吗 1. auto_increment相关的参数控制 1.1 innodb_autoinc_lock_mode 0: 每一个statement获取一个排他lock,直到statement结束,

Mysql auto_increment 重新计数(让id从1开始)

当清空一个表的时候,重新插入数据,发现auto_increment属性的字段计数不是从1开始的时候,可以使用以下命令 方法一 delete from test; alter table `test` auto_increment=1 (好处,可以设置AUTO_INCREMENT 为任意值开始) 提示:如果表列和数据很多,速度会很慢,如90多万条,会在10分钟以上. 方法二 truncate table test (好处,简单,AUTO_INCREMENT 值重新开始计数) 一般情况下我们使用第二