为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【概述】 sysbench 1.20 混合读写压测,prepare数据后,max(id) 接近count 行数的1.5倍。每插入2688行数据后,第2689行id 会跳高1313。造成巨大的id 间隙。
【应用框架及开发适配业务逻辑】
sysbench 1.20
【背景】 做过哪些操作
vim oltp_common.lua 修改create_table function 增加 AUTO_ID_CACHE=1
time sysbench /usr/share/sysbench/oltp_read_write.lua --db-driver=mysql --mysql-host=xxx.xxx.16.65 --mysql-port=6000 --mysql-user=root --mysql-password=‘xxx’ --mysql-db=sbtest --table_size=1000000 --tables=10 --threads=10 --time=300 prepare
【现象】 业务和数据库现象
默认建表sql ,prepare 数据如下:
CREATE TABLE sbtest4
(
id
int(11) NOT NULL AUTO_INCREMENT,
k
int(11) NOT NULL DEFAULT ‘0’,
c
char(120) NOT NULL DEFAULT ‘’,
pad
char(60) NOT NULL DEFAULT ‘’,
PRIMARY KEY (id
) /*T![clustered_index] CLUSTERED */,
KEY k_4
(k
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=1221704
select max(id),min(id) ,count(1) from sbtest.sbtest4;
±--------±--------±---------+
| max(id) | min(id) | count(1) |
±--------±--------±---------+
| 1003089 | 1 | 1000000 |
±--------±--------±---------+
表级设置AUTO_ID_CACHE=1后,建表sql ,后prepare 数据如下:
CREATE TABLE sbtest2.sbtest4 (
id
int(11) NOT NULL AUTO_INCREMENT,
k
int(11) NOT NULL DEFAULT ‘0’,
c
char(120) NOT NULL DEFAULT ‘’,
pad
char(60) NOT NULL DEFAULT ‘’,
PRIMARY KEY (id
) /*T![clustered_index] CLUSTERED */,
KEY k_4
(k
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=1486753 /*T![auto_id_cache] AUTO_ID_CACHE=1 */
select max(id),min(id) ,count(1) from sbtest2.sbtest4;
±--------±--------±---------+
| max(id) | min(id) | count(1) |
±--------±--------±---------+
| 1486752 | 1 | 1000000 |
±--------±--------±---------+
【问题】 当前遇到的问题
AUTO_ID_CACHE=1 兼容mysql 自增,id存在巨大的间隙。
【业务影响】
数据超过2688行,不满足id 连续自增的要求。
【TiDB 版本】
7.5.1
【附件】 相关日志及监控