为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
- 【TiDB 版本】:3.0.8
- 【问题描述】:开发人员反应有张表的ID列不连续,且查询时默认排序ID列的排序结果不正确。
表结构:
CREATE TABLE `sms_sign_conf` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`sign_name` varchar(25) NOT NULL DEFAULT '' COMMENT '签名名字,应保持唯一',
`channel` varchar(25) NOT NULL DEFAULT '' COMMENT '签名简拼',
`sign_len` tinyint(2) NOT NULL DEFAULT '0' COMMENT '签名字符长度',
`create_at` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=120017/*!90000 SHARD_ROW_ID_BITS=4 PRE_SPLIT_REGIONS=3 */
SQL语句:
mysql> select id,from_unixtime(create_at) from sms_sign_conf;
+-------+----------------------------+
| id | from_unixtime(create_at) |
+-------+----------------------------+
| 60017 | 2020-04-24 10:58:41.000000 |
| 1 | 2018-11-29 19:56:00.000000 |
| 2 | 2018-11-29 19:56:00.000000 |
| 3 | 2018-11-30 17:18:16.000000 |
| 4 | 2018-11-30 17:21:11.000000 |
| 5 | 2018-11-30 17:22:39.000000 |
| 6 | 2018-11-30 17:24:38.000000 |
| 7 | 2018-11-30 17:38:12.000000 |
| 8 | 2018-12-03 10:34:22.000000 |
| 9 | 2018-12-03 10:34:42.000000 |
| 10 | 2018-12-03 10:35:00.000000 |
| 11 | 2018-12-03 10:35:18.000000 |
| 12 | 2018-12-03 10:35:47.000000 |
| 13 | 2018-12-03 10:36:19.000000 |
| 14 | 2018-12-03 10:36:35.000000 |
| 15 | 2018-12-03 10:36:48.000000 |
| 16 | 2019-11-01 10:23:37.000000 |
| 17 | 2020-03-16 15:01:13.000000 |
| 90017 | 2020-04-24 11:02:13.000000 |
+-------+----------------------------+
问题1:id列没有正确排序
问题2:id=60017,id=90017跳跃了30000个值。查询相关资料后发现tidb-server在重启后缓存的id区间会失效,需要重新获取。但是我的情况是此时的tidb-server没有重启,检查tidb-server的日志也没有发现问题,id自增值居然自动跳跃了30000个值。