首页
学习
活动
专区
圈层
工具
发布

mysql修改自增起始值

A: select max(id) from A; auto_increment id=58000; B: 只有主键没有自增键 select id from B by id desc limit...10; | id | +---------+ | 1873741 | | 1873739 | | 1873737 | | 1873735 | | 1873733 | | 1873731...| | 1873729 | 发现B最大id是187000w,所以考虑修改A的自增列起始值,通过如下命令 alter table A auto_increment=2000000; 修改后起始值从200w...INCREMENT当前的顺序值 truncate 操作会导致AUTO\_INCREMENT 从1开始, **主因**: 后来发现主要原因是所在实例重启造成的,auto_increment的自增值在mysql8.0...之前一直是记录内存中的, 当实例重启的时候该值会丢失,那么mysql会取select max(id) + 1 的值作为新插入数据的自增ID, 这样启动后就A表从58000开始而不是1873741开始

4K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    解决MySQL自增id用尽的问题

    背景介绍我们项目中有一张article_click_record表,用户每次点进一篇文章,就会往该表中插入一条记录article_click_record表主要有如下三列:id:自增主键,INT类型user_id...解决方案首先,对于表的自增id即将溢出的问题,由于该表存在大量记录,因此不能直接将该表的id列改为BIGINT类型我们实际采用的解决id溢出的方式是:新增一张article_click_record_new...id溢出后,新表的数据也就预热完成了,此时只往新表中写入数据,并且在读表时,也可以直接读取新表了 新表的id列采用BIGINT类型的原因: 避免再次出现自增id用尽的问题由于业务需要,我们希望id是保持递增的...已经溢出(MySQL在自增id达到最大值后,下次再获取自增id时,还是会获取到最大值) // 因此,当出现DuplicateKeyException异常时,只需将oldTableIdOverflow...值,因此这里执行的SQL是: // INSERT INTO article_click_record_new(id, user_id, article_id) VALUES(#{id},

    1.4K10

    技术分享 | 关于 MySQL 自增 ID 的事儿

    当我们使用 MySQL 进行数据存储时,一般会为一张表设置一个自增主键,当有数据行插入时,该主键字段则会根据步长与偏移量增长(默认每次+1)。...自增的值并不是保存在表结构信息内的,对于不同的版本它们有如下的区别: 1.1.1 MySQL 8.0版本之前(重启后可能会产生变化): 计数器的值存储在内存中的,重启后丢弃,下一次将读取最大的一个自增ID...https://dev.mysql.com/doc/refman/5.7/en/innodb-auto-increment-handling.html#innodb-auto-increment-initialization...1.1.2 MySQL 8.0版本(重启后保持不变): 计数器的值将会持久化到磁盘。...不一定,业务也不应该过分依赖 MySQL 自增 ID 的连续性,在以下三种情况下,并不能保证自增 ID 的连续性: 1.5.1 插入时的其他唯一索引冲突 假设已存在数据{1,张三},且张三所属的字段设置了唯一主键

    4.8K10

    关于mysql自增id的获取和重置

    转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) ---- mysql获取自增id的几种方法 使用max函数:select max(id) from tablename...使用LAST_INSERT_ID函数:select LAST_INSERT_ID() 优点:获取到的是真正的自增id。 缺点:该函数是与table无关的,永远保留最新插入的自增列的id。...使用mysql查询函数:SHOW TABLE STATUS; 优点:能够准确的查到自增id。而且可以在语句后面加上where语句或者like语句来过滤。...使用自定义查询方法:mysql表相关的信息是放在information_schema表里。所以我们参考 SHOW TABLE STATUS来构建查询语句。...---- mysql自增id的重置 使用truncate:truncate table; 说明:使用truncate会删除表的数据释放空间,并且重置字自增id,但不会删除表的定义。

    13.1K20

    MyBatis + MySQL返回插入成功后的主键id

    这是最近在实现perfect-ssm中的一个功能时碰到的一个小问题,觉得需要记录一下,向MySQL数据库中插入一条记录后,需要获取此条记录的id值,以生成对应的key值存入到redis中,id为自增int...articleCreateDate},#{articleContent},#{addName}) 这种方式只是返回一个影响行数值,并不能满足此次需求,于是做了如下修改: id...#{articleContent},#{addName}) 在insert中将useGeneratedKeys属性设置为true,并制定keyProperty为Article对象的id...=null); System.out.println("insert后article的id:"+article.getId()); } 结果如下: ?...mysql中表的记录如下: ? 结语 首发于我的个人博客,新的项目演示地址:perfect-ssm,登录账号:admin,密码:123456 ?

    4.9K60

    MySQL ORDER BY主键id加LIMIT限制走错索引

    PRIMARY 4 NULL 7624 Using where 开启优化器跟踪查看MySQL优化过程 -- 开启优化器跟踪 set session optimizer_trace...这边时,MySQL也没有改变执行计划,还是选择了report_product_sales_data_hq_code_orgz_id_index索引 "clause": "ORDER...这边时,MySQL改变了执行计划,选择了PRIMARY主键索引 "clause": "ORDER BY", "index_order_summary...where 总结 在order by id的情况下,MySQL由于自身的优化器选择,为了避免某些排序的消耗,可能会走非预期的PRIMARY主键索引; 对于数据量比较大,而且执行量很高的分页sql,尽可能将所有的查询字段包括在索引中...,同时使用索引来消除排序; 多用explain查看是否使用到了最优索引; 利用optimizer trace查看优化器执行过程; 观察mysql的slow_query_log,及时做排查优化。

    7.2K32

    MySQL自增id超大问题查询 转

    很快,小A就排查了一遍自己的代码,没有删除的地方,也没有主动插入、更新id的地方,怎么会这样呢?...查了资料之后,小A得知,原来,mysql主键自增有个参数innodb_autoinc_lock_mode,他有三种可能只0,1,2,mysql5.1之后加入的,默认值是1,之前的版本可以看做都是0。...是7   delete from t1 where id in (2,3,4);   -- 此时数据表只剩1,5,6了,自增id还是7   insert into t1 values(2, 106, "...上面的例子执行完之后表的下一个自增id是10,你理解对了吗,因为最后一条执行的是一个Mixed-mode inserts语句,innoDB会分析语句,然后分配三个id,此时下一个id就是10了,但分配的三个...id并不一定都使用。

    5.8K20
    领券