業務同窗碰見這樣的一個問題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 語法。