【SOP 系列 34】bigint最大值实测

感谢 @wl21787 的分享:

背景

TiDB版本:V3.0.8

数据类型:bigint

在使用bigint数据类型时,不知其具体上限可以支持到多少,如果插入一个较大值会出现ERROR 1467 (HY000): Failed to read auto-increment value from storage engine。

测试

测试表

CREATE TABLE t(id bigint UNIQUE KEY AUTO_INCREMENT,a int not null default 0);

测试数据

insert into t(id) values(18446744073709551616);
ERROR 1467 (HY000): Failed to read auto-increment value from storage engine

其中18446744073709551616=2的64次方

truncate后继续测试

truncate table t;

因技术有限只能通过二分法进行不断测试,最终得到其最大值

mysql> insert into t(id) values(9223372036854775805);
Query OK, 1 row affected (0.01 sec)

mysql> insert into t values();
ERROR 1467 (HY000): Failed to read auto-increment value from storage engine

总结:bigint数据类型且为自增,其最大值为9223372036854775805。

准确来说是无符号的范围是0-18446744073709551615,有符号的因为做主键不存在负数范围是0-9223372036854775807

那么用bigint做的auto_random,那是不是有可能在这个区间内产生2个相同的随机值?

你算算这概率是多少,,,基本不会了吧