业务同窗碰见这样的一个问题mysql
select * from t where id>100 order by id asc limit 200;sql
发现只查到了10个数据并发
最小的id是101,最大的id是130spa
而后去控制台执行线程
select * from t where id>100 and id<=130;code
发现又能获取到30个数据server
推测是TIDB自增ID有问题,先写入了ID大的值,后写入了ID小的值文档
查到在TIDB官方文档上有解释get
https://pingcap.com/docs-cn/stable/faq/tidb/it
1.1.22 TiDB 中,为何出现后插入数据的自增 ID 反而小?
TiDB 的自增 ID (
AUTO_INCREMENT
) 只保证自增且惟一,并不保证连续分配。TiDB 目前采用批量分配的方式,因此若是在多台 TiDB 上同时插入数据,分配的自增 ID 会不连续。当多个线程并发往不一样的 tidb-server 插入数据的时候,有可能会出现后插入的数据自增 ID 小的状况。此外,TiDB容许给整型类型的字段指定 AUTO_INCREMENT,且一个表只容许一个属性为AUTO_INCREMENT
的字段。详情可参考CREATE TABLE 语法。