参考这一篇文章:(不过我对这一篇文章有异议)
http://blog.csdn.net/leshami/article/details/39779509
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 删除后,仍然在原来基数上增长。
################################################################################