mysql autoextend_MySQL auto_increment_increment 和 auto_increment_offset

参考这一篇文章:(不过我对这一篇文章有异议)

1:搭建测试环境

create table t

(t int(10) primary key auto_increment);

mysql> show variables like '%increment%';

+-----------------------------+-------+

| Variable_name | Value |

+-----------------------------+-------+

| auto_increment_increment | 1 |

| auto_increment_offset | 1 |

| div_precision_increment | 4 |

| innodb_autoextend_increment | 8 |

+-----------------------------+-------+

4 rows in set (0.00 sec)

执行3次插入操作,作为测试数据

insert into t values ();

insert into t values ();

insert into t values ();

#插入3个测试数据

mysql> select * from t;

+---+

| t |

+---+

| 1 |

| 2 |

| 3 |

+---+

3 rows in set (0.00 sec)

2:修改步长为5

mysql> set auto_increment_increment=5;

Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%increment%';

+-----------------------------+-------+

| Variable_name | Value |

+-----------------------------+-------+

| auto_increment_increment | 5 |

| auto_increment_offset | 1 |

| div_precision_increment | 4 |

| innodb_autoextend_increment | 8 |

+-----------------------------+-------+

4 rows in set (0.00 sec)

然后执行三次插入操作:

mysql> insert into t values();

Query OK, 1 row affected (0.00 sec)

mysql> insert into t values();

Query OK, 1 row affected (0.00 sec)

mysql> insert into t values();

Query OK, 1 row affected (0.00 sec)

mysql> select * from t;

+----+

| t |

+----+

| 1 |

| 2 |

| 3 |

| 6 |

| 11 |

| 16 |

+----+

6 rows in set (0.00 sec)

结论:初始值为1:步长:1,改为初始值1:步长:5。之后数值从3变到6了。

###################################################################

#插入4个测试数据,然后改步长为5.然后再插入一次数据。

mysql> select * from t;

+---+

| t |

+---+

| 1 |

| 2 |

| 3 |

| 4 |

| 6 |

+---+

5 rows in set (0.00 sec)

可以看到当之前的数据量小于步长5时候,新插入的数据还是6

###################################################################

###################################################################

#插入5个测试数据,然后改步长为5,然后再插入一次数据。

mysql> select * from t;

+----+

| t |

+----+

| 1 |

| 2 |

| 3 |

| 4 |

| 5 |

| 6 |

| 11 |

+----+

7 rows in set (0.00 sec)

可以看到当,之前的数据量小于步长5的时候,插入的新数据还是6。

###################################################################

###################################################################

插入6个测试数据,然后改步长为5,然后再插入一次数据。直接变为11了。

mysql> select * from t;

+---+

| t |

+---+

| 1 |

| 2 |

| 3 |

| 4 |

| 5 |

| 6 |

+---+

6 rows in set (0.00 sec)

mysql> set auto_increment_increment=5;

Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%increment%';

+-----------------------------+-------+

| Variable_name | Value |

+-----------------------------+-------+

| auto_increment_increment | 5 |

| auto_increment_offset | 1 |

| div_precision_increment | 4 |

| innodb_autoextend_increment | 8 |

+-----------------------------+-------+

4 rows in set (0.00 sec)

mysql> insert into t values ();

Query OK, 1 row affected (0.00 sec)

mysql> select * from t;

+----+

| t |

+----+

| 1 |

| 2 |

| 3 |

| 4 |

| 5 |

| 6 |

| 11 |

+----+

7 rows in set (0.00 sec)

###################################################################

第一次是插入了3个测试数据,然后改步长为5,然后再插入数据为6;第二次插入4个测试数据,然后改步长为5,然后再插入数据还是6;插入5个测试数据,然后改步长为5,然后再插入数据还是6;插入6个测试数据,然后改步长为5,就变为11了。

如果前面的数据小于等于步长,那么改步长后新插入的数据就是步长+初始值。如果大于步长,则直接在此基础上增长.

################################################################################

delete from 删除后,仍然在原来基数上增长。

################################################################################

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值