自增锁ID复用问题

mysql> select * from pp;
+----+------+
| id | name |
+----+------+
|  1 | xx   |
|  2 | xx   |
|  3 | xx   |
|  4 | xx   |
|  5 | xx   |
|  6 | xx   |
|  7 | xx   |
|  8 | xx   |
|  9 | xx   |
| 10 | xx   |
| 13 | xx   |
| 14 | xx   |
| 15 | xx   |
| 16 | xx   |
| 17 | xx   |
| 18 | xx   |
| 19 | xx   |
| 20 | xx   |
| 21 | xx   |
| 22 | xx   |
| 23 | xx   |
| 24 | xx   |
+----+------+
22 rows in set (0.00 sec)

mysql> delete from pp where id=24;
Query OK, 1 row affected (0.11 sec)

mysql> show create table pp;

CREATE TABLE `pp` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=gbk 

重起MYSQL 服务器

mysql> show create table pp;

| pp    | CREATE TABLE `pp` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=gbk |
时间: 2024-10-31 23:57:53

自增锁ID复用问题的相关文章

自增锁引发的悲剧

背景 先描述下故障吧 step0: 环境介绍 1. MySQL5.6.27 2. InnoDB 3. Centos 基本介绍完毕,应该跟大部分公司的实例一样 CREATETABLE`new_table`( `id` int(11) NOT NULL AUTO_INCREMENT, `x` varchar(200) DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5908151 DEFAULT CHARSET=utf8 C

自增锁

自增锁,在提交前释放,并发插入高 s,x等锁,在COMMIT扣释放,并发插入需要等待 不能回滚到前面的值 insert -like: simple-insert:插入前就能确定插入行数语句 bulk insert :插入前不确定插入行数的语句 replace ... select mixed-mode inserts:insert into t1(c1,c2) values(1,"a"),(null,"b"),(4,"c"),(null,&quo

插入一条记录并获取自增的id

Connection connection = (Connection) dbcp.getConn(); int affectRows = qr.update(connection, sql,params); BigInteger id = BigInteger.ZERO ; id = qr.query(connection, "SELECT LAST_INSERT_ID()", new ScalarHandler(1)); //获取新增记录的自增主键 这个是通过dbutils来获取的

mysql怎么让清空表且自增的id重新从1开始的命令

sql命令: 用于清空某表的数据 且让自增的id重新从0开始truncate table 你的表名 mysql如何修改变量set global long_query_time=2; mysql 随机查询数据高效率写法 SELECT * FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+(SELECT MIN(id) FROM `t

MySQL AutoIncrement--自增锁模式

自增锁模式 在MYSQL 5.1.22版本前,自增列使用AUTO_INC Locking方式来实现,即采用一种特殊的表锁机制来保证并发插入下自增操作依然是串行操作,为提高插入效率,该锁会在插入语句完成后立即释放,而不是插入语句所在事务提交时释放.该设计并发性能太差,尤其在大批量数据在一条语句中插入时(INSERT SELECT ), 会导致该语句长时间持有这个“表锁”,从而阻塞其他事务的插入操作. 在MYSQL 5.1.22版本开始,InnoDB存储引使用一种轻量级互斥锁(Mutex)来控制自增

自增锁预分配ID

http://www.cnblogs.com/xpchild/p/3825309.html mysql> show create table pp; CREATE TABLE `pp` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk mysql> insert into pp(name)

mybatis获取mysql自增的id值

由于msyql没有oracle的sequence方法,那么,在使用mysql自增id字段时,想即时获取本次insert对应的id值,在mybatis如下配置: <insert id="saveTitle" parameterType="pd"> INSERT INTO question (NAME,MAJORID) VALUES (#{NAME},#{MAJOR}) <selectKey resultType="int" ord

使用mybatis插入自增主键ID的数据后返回自增的ID

在开发中碰到用户注册的功能需要用到用户ID,但是用户ID是数据库自增生成的,这种情况上网查询后使用下面的方式配置mybatis的insert语句可以解决: 1 <insert id="insert" keyProperty="id" useGeneratedKeys="true"? parameterType="com.demo.domain.User">? 2 insert into User_t(name,ag

通过EasyUI Tree说明SQL GUID和自增列ID的使用场景

最新在开发中用到了EasyUI里面的Tree,通过API可以看到这个Tree的数据格式如下: 其中ID比较重要,API也说了,最开始我考虑到GUID比自增ID多占用了一些空间,所以采用的自增ID,测试数据库结构如下: 其中,表TB_Menu中的MENU_ID为标识列,步长值为1,表TB_MenuGroup中的MENU_GROUP_ID也为标识列,步长值为1,Menu_Group_ID为主外键关系,我在页面上需要将数据库中所有的菜单都加载出来供用户选择,首先加入测试数据: INSERT INTO