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

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用完会怎样?》

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

    linux 查找最大文件 方法

    Linux上查找最大文件的 3 种方法第一种:ls最简单的方法就是借助 ls 命令,因为 ls 命令本身输出是带文件大小信息的。...比如,我要列出 /bin 目录中的 5 个最大文件,可以:ls -lSh /bin | head -5 第二种:findfind 本身就是查找命令,可以递归查找一个目录的子目录,所以用它是自然的。...比如,查找 / 目录下最大的一个文件:sudo find / -type f -printf "%s\t%p\n" | sort -n | tail -1 如果要找前 10 个大文件呢,可以这样:$...比如,查找 /home 下前 20 个最大的文件:sudo du -a /home | sort -n -r | head -n 20 查找当前文件夹中最大的 10 个目录:sudo du -a | sort...-n -r | head -n 10 如果要显示可读的KB、MB、GB信息,可以加上 -h 参数:du -hs * | sort -rh | head -n 10 查找最大目录/文件(包括子文件夹)

    7.7K30

    HDOJ 2025 查找最大元素

    Problem Description 对于输入的每个字符串,查找其中的最大字母,在该字母后面插入字符串“(max)”。...Output 对于每个测试实例输出一行字符串,输出的结果是插入字符串“(max)”后的结果,如果存在多个最大的字母,就在每一个最大字母后面都插入”(max)”。...的函数: replace和replaceAll 1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字 符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串...,即把源字符串中的某一字符或字符串全部换成指定的 这个方法也是基于规则表达式的替换,但与replaceAll()不同的是,只替换第一次出现的字符串; 另外,如果replaceAll()和replaceFirst...()所用的参数据不是基于规 字符串的操作; 还有一点注意:执行了替换操作后,源字符串的内容是没有发生改变的.

    1.2K10

    查找最大不重复子串的长度

    查找最大不重复子串长度是一个常见的字符串处理问题,有多种解决思路。...通过两个指针start和end控制窗口的范围,动态调整窗口的大小,以找到最大不重复子串。 O(n),每个字符最多被访问两次,一次是窗口扩展,一次是窗口收缩。...动态规划 使用动态规划数组dp,其中dp[i]表示以字符s[i]结尾的最长不重复子串的长度。通过状态转移方程更新dp[i],并维护一个变量记录最大长度。...下面以滑动窗口为例,介绍下如何通过滑动窗口来查找最大不重复子串长度,该方法是一种有效的解决子串问题的策略。...在每一步迭代中,如果字符已经在窗口中,更新窗口的起始位置为字符上一次出现的位置的下一个位置。然后,更新字符的最后出现位置,并计算当前窗口的长度,更新最大长度。

    1.2K10

    查找最大不重复子串的长度

    查找最大不重复子串长度是一个常见的字符串处理问题,有多种解决思路。...通过两个指针start和end控制窗口的范围,动态调整窗口的大小,以找到最大不重复子串。 O(n),每个字符最多被访问两次,一次是窗口扩展,一次是窗口收缩。...在最坏情况下,字符集的大小可能是常数,因此空间复杂度是 O(1)。 下面以滑动窗口为例,介绍下如何通过滑动窗口来查找最大不重复子串长度,该方法是一种有效的解决子串问题的策略。...•窗口会动态地扩展和收缩,通过调整 start 和 end 的位置,以找到最大不重复的子串。2.哈希表记录字符最后出现位置:•使用哈希表 charIndex 记录每个字符最后出现的位置。...在每一步迭代中,如果字符已经在窗口中,更新窗口的起始位置为字符上一次出现的位置的下一个位置。然后,更新字符的最后出现位置,并计算当前窗口的长度,更新最大长度。

    1.3K10

    Pandas中如何查找某列中最大的值?

    一、前言 前几天在Python白银交流群【上海新年人】问了一个Pandas数据提取的问题,问题如下:譬如我要查找某列中最大的值,如何做? 二、实现过程 这里他自己给了一个办法,而且顺便增加了难度。...print(df[df.点击 == df['点击'].max()]),方法确实是可以行得通的,也能顺利地解决自己的问题。...顺利地解决了粉丝的问题。 三、总结 大家好,我是皮皮。这篇文章主要盘点了一个Pandas数据提取的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。...最后感谢粉丝【上海新年人】提出的问题,感谢【瑜亮老师】给出的思路,感谢【莫生气】、【添砖java】、【冯诚】等人参与学习交流。

    10.8K10

    MySQL 反向模糊查找

    今天写一个微信回复的 demo, 然后遇到这种场景....收到特定的消息 根据数据库存储的关键字回复特定的内容 不能全匹配, 数据库可以模糊匹配 一说到模糊匹配, 大家肯定都想到like, 假设表结构如下 id keyword reply 1...大卫 他就是大卫 2 大卫王 他就是大卫 假如输入的关键字是大卫可以查找出所有含有大卫的关键字 这时候我们写的SQL肯定是这样子的: select * from table_name...where keyword like '%大卫% 我们换一种场景, 假如数据库我们只存一条记录, 不管用户输入, 大卫还是大卫王我们都会回复它同一个内容.这时候我们只需要反向模糊查找即可 表数据如下...id keyword reply 1 %大卫% 他就是大卫 之后我们写的SQL如下即可完成反向模糊查找 select * from table_name where

    1.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

    MySQL 自增ID的几个小问题

    下面这几个小问题都是基于 InnoDB 存储引擎的。 1. ID最大的记录删除后,新插入的记录ID是什么 例如当前表中有ID为1,2,3三条记录,把3删除,新插入记录的ID从哪儿开始?...=4 DEFAULT CHARSET=latin1 自增ID为4,删除ID最大的记录并不影响自增ID的值。...MySQL 重启后自增ID从哪儿开始 例如当前表中有ID为1,2,3三条记录,把3删除,重启MySQL,新插入记录的ID从哪儿开始? 很多人会认为从4开始,实际是从3开始。...因为InnoDB的自增值是记录在内存的,不是记录在数据文件的。 重启后,会把 当前最大ID + 1 作为起始值。...删除最大ID值对自增ID值没有影响,但MySQL重启之后有影响,不会使用之前的自增ID值,而是使用最大ID+1,因为自增ID值是存在内存中,重启后需要重新计算。 自增ID用完后就不变了。

    9.5K21

    Linux——查找占用磁盘体积最大的前10个文件

    前言 服务器上传文件失败了,才开始没考虑到磁盘原因还以为是自己的scrt的问题,还好df -h看了下,最后发现磁盘满了,真是.......查找 find / -type f -print0 | xargs -0 du -h | sort -rh | head -n 10 详解 find //在目录结构中搜索文件的命令 / //在整个系统(...从根目录开始)中查找 -type //指定文件类型 f //普通文件 -print0 //在标准输出显示完整的文件名,其后跟一个空字符(null) | //控制操作符,将一条命令的输出传递给下一个命令以供进一步处理...xargs //将标准输入转换成命令行参数的命令 -0 //以空字符(null)而不是空白字符(LCTT 译者注:即空格、制表符和换行)来分割记录 du -h //以可读格式计算磁盘空间使用情况的命令...sort //对文本文件进行排序的命令 -r //反转结果 -h //用可读格式打印输出 head //输出文件开头部分的命令 n -10 //打印前 10 个文件

    1.3K10

    查找二维数组的最大值及其位置

    查找二维数组的最大值及其位置-Java实现 例: 封装一类 MatrixLocation,查询二维数组中的最大值及其位置。...最大值用 double 类型的maxValue 存储,位置用 int 类型的 row 和 column 存储。封装执行主类,给定二维数组,输出最大值及其位置。封装执行主类。...这道题目就是一道简单的二维数组查找问题,遍历二维数组即可找到最大值。...方法不能其实有一些问题,它只能输出最大值在数组中第一次出现的位置,这是由于题目已经规定好了最大值的下标用int row、int column表示。...如果自己写的话,可以用另外的两个数组分别保存最大值的行下标与列下标,实现将最大值在数组中所有出现的位置都输出。

    3.6K20

    技术分享 | 关于 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,张三},且张三所属的字段设置了唯一主键

    5.4K10
    领券