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

MySQL自增id超过int最大值的场景

点击标题下「蓝色微信名」可快速关注 数据库的主键我们有时候会用自增列,但是自增都会有个上限,如果达到怎么办?技术社群的这篇文章《MySQL自增id超过int最大值怎么办?》...二、问题分析 因为数据表很大,有5E+数据,我第一反应是mysql表数据量可能爆了,但是查了下好像没有太大限制, 再认真看了下表的自增id,这个数字让人有点熟悉的,这个不就是int的最大值吗。...第三个分库分表就更麻烦了,分库分表需要引入框架,不按照分片查询还需要引入ES,引入了ES还需要引入同步mysql和ES的中间件logstash等。...但是按理说int最大值是21E+,数据表数据才5E+,按理说是用不完的。结果我看到自增的id值居然是不连续的。...统计了一下后面的数据大概是1个小时完成1.5%左右, 周一晚上执行的,但到周四早上上班的时候才跑完,用了2天多一点。 五、总结 之前刷到一篇文章《字节面试:MySQL自增ID用完会怎样?》

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

    MySQL自增id超大问题查询 转

    问题排查 这张表是一个简单的接口服务在使用,每天大数据会统计一大批信息,然后推送给小A,小A将信息更新到数据库中,如果是新数据就插入,旧数据就更新之前的数据,对外接口就只有查询了。...查了资料之后,小A得知,原来,mysql主键自增有个参数innodb_autoinc_lock_mode,他有三种可能只0,1,2,mysql5.1之后加入的,默认值是1,之前的版本可以看做都是0。...id的。...ON DUPLICATE KEY UPDATE ...语句拆开,先去查询,然后去更新,这样就可以保证主键不会不受控制的增大,但增加了复杂性,原来的一次请求可能变为两次,先查询有没有,然后去更新。...删除表的自增主键 删除自增主键,让唯一索引来做主键,这样子基本不用做什么变动,只要确定目前的自增主键没有实际的用处即可,这样的话,插入删除的时候可能会影响效率,但对于查询多的情况来说,小A比较两种之后更愿意选择后者

    6.3K20

    『叶问』#40,MySQL进程号、连接ID、查询ID、InnoDB线程与系统线程如何对应

    一文快速掌握 MySQL进程号、连接ID、查询ID、InnoDB线程与系统线程的对应关系。 有时候,怀疑某个MySQL内存查询导致CPU或磁盘I/O消耗特别高,但又不确定具体是哪个SQL引起的。...,及时杀掉或停止引起等待的查询请求。...不过本文想讨论的是,MySQL的进程ID、内部查询ID、内部线程ID,和操作系统层的进程ID、线程如何对应起来。...ID、查询ID等的关系 从MySQL 5.7开始,performance_schema.threads 表增加 THREAD_OS_ID 列,用于记录MySQL内部线程对应的系统线程ID。...# MySQL连接ID=25,OS线程句柄 = 140442126739200(后面再介绍),查询ID=87(对应上面的 STATEMENT_ID) MySQL thread id 25, OS thread

    3.5K21

    spring boot CRUD(查询全部,查询ID,模糊查询,删除id,全部删除,新增多条单条 修改)

    :模糊查询 单点查询 查询全部 * 删除 * 增加 数据 * * * * @param */ // public...return le; } /** * http://localhost:6688/user/find/{like=》模糊查询的数据} * 模糊查询 相关数据...(写删除的id) * 根据id删除 * @param id * @return */ @ResponseBody @GetMapping("delect...可以告诉读你代码的人,这是对它父类方法的重写,其实很多代码规范没有为什么,规范就是规范, * 代码的可读性还是很重要的。 * 3....* * 比如当你想要在子类中重写父类的一个方法,但是你把名字打错了,当你写了@Override编译器会提示你, * 你写的这个方法父类中没有;但是如果你没有写@Override编译器就会觉得这个是你子类中写的新的方法

    1.5K10

    mysql的查询、子查询及连接查询

    一、mysql查询的五种子句 where(条件查询)、having(筛选)、group by(分组)、order by(排序)、limit(限制结果数) 1、where常用运算符...因为shop_price使用了max函数,那么它是取最大的,而语句中使用了group by 分组,那么goods_name并 没有使用聚合函数,它只是cat_id下的第一个商品,并不会因为shop_price...改变而改变 mysql中的五种统计函数: (1)max:求最大值 select max(goods_price) from goods...这里会取出最大的价格的值,只有值 #查询每个栏目下价格最高的 select cat_id,max(goods_price) from goos group...,【即左右连接的结果去除null项后的并集(去除了重复项)】 mysql目前还不支持 外连接(即左右连接结果的并集,不去除null项) 语法:select n1,n2,n3

    17.6K80

    es写数据的过程,通过id进行查询过程,模糊查询过程

    目录 es写数据的过程 es查询数据过程 通过id进行查询过程 模糊查询过程 es写数据的过程 集群有3个 客户端执行写数据的代码的时候,比如kibana里面往索引里面写数据,或者java代码 写数据...es查询数据过程 通过id进行查询过程 kibana里面根据id查询数据,或者java代码里面根据id进行查询。...比如现在选择了主分片,那么会将主分片里面对应id的文档返回给协调节点, 协调节点将文档返回给客户端 模糊查询过程 kibana里面根据字段模糊查询数据,或者java代码里面根据字段进行模糊查询。...每个主分片或者主分片的副本就在各自里面查找符合条件的数据,找到之后, 将对应文档数据的id返回给协调节点,协调节点拿到所有符合条件的数据id之后, 将数据进行合并,排序,分页等操作之后,最后就会有一定的结果...之后协调节点拿的这些id到各个节点去拿对应的文档数据,并且将文档数据返回给客户端

    1.7K30

    MYSQL 中的查询技巧 与 MYSQL 8 并行查询

    最近公司的系统一点点的开始了拆分,从ORACLE 转移到 MYSQL 中,部分程序员的想法在使用MYSQL中还是没有转变过来,直接将ORALCE中的查询语句直接搬到了MYSQL。...这就直接抛出一个问题,就是MYSQL的查询技巧还重要吗?当然如果你还要用MYSQL 来进行数据库的提取和查询,那就必须重视MYSQL的查询技巧。...下图是以 mysql 8.015 这个版本作为语句执行的基础 其实两条语句查询的结果是一样的,仅仅是写法不一样,给出的执行计划就是不一样的 以目前最新版本的MYSQL来说,从上面的例子里面,还是要鼓励直接查询...,后面其实我还做了一些其他的测试,例如将时间的范围扩大,发现目前的MYSQL 8.015 很聪明的走了应该走的索引,看了MYSQL8.0 这个版本的查询优化器要比MYSQL 5.7 进步不少。...最后,我们看看MYSQL 8.0的并行查询,并行查询,其实在 PG, SQL SERVER , ORACLE 中都有,但形式不同,MYSQL 8 之前是没有并行查询这个概念的,MYSQL 8 引入了并行查询

    10.1K60

    根据id查询所有子节点父节点,mysql 以及ssm前后台处理流程

    3、mysql查询语句可以查询出父级目录信息: 注意:自己的数据表表名称,切记手动修改,字段名称(特别注意id,parent_id字段名称,不然肯定查询不出来的)。..._id = T2.id 13 ORDER BY T1.lvl DESC 查询实例如下所示: ?  ...4、然后使用ajax来传递id的值,最后展示出来查询出来的名称即可: 1 //查询目录 2 function findByDirectory(id){ 3 var url = 'cateLogAction...@r := parent_id FROM catelog WHERE id = _id) AS parent_id, 8 @l := @l + 1 AS lvl..._id = T2.id 15 ORDER BY T1.lvl DESC 16 ]]> 17 5、由于我需要的是这种格式的展示形式,所以,展示如下所示,获取其他值,自行将获取到前台的数据进行拼接即可

    6.9K30

    ORACLE:根据父id查询所有子孙数据,或者根据子id查询所有父数据(start with connect by prior)

    一、需求: 我们在开发中经常遇到一种数据库表的设计:一个表中包含父子信息数据,也就是常说的树形数据. ---> 最常见的例子就是省市区一体表,就是通过id、pid、level来进行控制,从而一张表来存储数据...查询所有的子数据 需求:我输入山东省的id,会把山东省及下面的市区都查询出来 select * from REGION start with id = 2 connect by prior id =...pid -- prior 右边是子级id,就往子级的方向查询 ORDER BY id; 结果展示 四、根据id查询所有的父数据 需求:我输入黄岛区的id,会把黄岛区及其所在的市省国查询出来 select...* from REGION start with id = 8 connect by prior pid = id -- prior 右边是父id,就往父级的方向查询 ORDER BY id; 结果展示...五、总结 主要是列举这两种比较常用的写法,有问题留言哦。

    4K10

    MySQL replace into导致的自增id问题

    // MySQL replace into导致的自增id问题 // 今天线上遇到一个问题,挺有意思,这里记录一下希望对大家有所帮助。...某个表中,只有一条记录,发生高可用切换之后,自增id的值发生了变化,主从的自增id值不一致,导致数据写入报主键冲突的错误。...我们知道,在MySQL中,是支持replace语法的,当你执行replace into的时候,如果该条记录存在,那么replace会删除这条记录,然后重新insert一条新记录。...*/; 可以看到,MySQL将replace into的在binlog中保存的格式是update语句,那么update语句本质上不会对自增值进行修改,所以就导致了主从的表自增id不一致,这样虽然看着没有什么问题...,从库的自增id比主库的小,当主从发生切换的时候,这个问题就比较严重了,有些数据写入的时候,就会报错了。

    9.2K20
    领券