zoukankan      html  css  js  c++  java
  • 数据库自增ID用完了会怎样?

    起步

    对DBA来说这应该是送分题吧。而我是突如其来的想法想测试下的。正常来说程序员是不会关心自增ID用完的情况的。

    以 Mysql 为例,它支持的最大的整型是 unsigned bigint,上限是 2 的 64 次次方。假设每秒记录100万条数据的增长,用完自增ID要58万年以后了。

    自增ID用完了会怎样,什么报错

    那要是真的58万年以后了呢。就是要探究下用光了会怎样。在我的 Mysql 5.7 它的报错是:

    SQL Error (167): Out of range value for column 'id'.

    也有人在其他版本测出来的报错是:

    Duplicate entry '*****' for key 'PRIMARY'

    可以看出,不同的数据库底层实现不一样,不同版本也有差异。只能知道会报错,具体报错信息是什么不好说,可能是数据越界,也可能是主键冲突。

    vi设计http://www.maiqicn.com 办公资源网站大全https://www.wode007.com

    补充

    另外,另一个让程序员不关心自增ID用完的原因是。MySQL单机单表的处理能力是千万级别。当单表数据达到1千万时,MySQL性能就会开始下降,需要着手优化,这里的瓶颈主要是查询耗时。

    我们可以通过分区再撑一段时间,当数据量到10亿时,基本到了MySQL的极限,不分表分库的话,业务难以持续。如果分表分库的话那么自增ID就很难保证唯一性,这时候就得弃用自增ID,采用其他算法(如uuid)。

    总的来说,从业务的角度来讲自增ID不可能用完,单表也支撑不了那么大的数据量。不用担心自增ID用完的情况。

  • 相关阅读:
    继承中类的作用域
    访问控制与继承
    虚函数与抽象基类
    定义基类和派生类
    类成员指针
    固有的不可移植特性
    局部类
    union
    嵌套类
    枚举类型
  • 原文地址:https://www.cnblogs.com/qianxiaox/p/13767106.html
Copyright © 2011-2022 走看看