【 TiDB 使用环境】
pd * 3 (4c8g)
tidb * 3(4c8g)
tikv * 3(4c8g256g)
【概述】 场景 + 问题概述
**数据只有23万条.**
建表语句:
CREATE TABLE group_info
(
group_id
bigint(20) NOT NULL COMMENT ‘组id’,
parent_group_id
bigint(20) NOT NULL COMMENT ‘父组id’,
parent_group_creator_id
varchar(100) NOT NULL COMMENT ‘父组的创建id’,
group_title
varchar(220) NOT NULL COMMENT ‘组名称’,
group_type
tinyint(4) NOT NULL COMMENT ‘组类型’,
group_state
tinyint(4) NOT NULL COMMENT ‘组状态’,
start_time
datetime NOT NULL COMMENT ‘开始时间’,
end_time
datetime NOT NULL COMMENT ‘结束时间’,
group_creator_id
varchar(100) NOT NULL COMMENT ‘创建者id’,
referee_id
varchar(100) NOT NULL DEFAULT ‘’ COMMENT ‘中介id’,
notice_type
tinyint(4) NOT NULL DEFAULT ‘0’ COMMENT ‘通知类型’,
is_delete
tinyint(4) DEFAULT ‘0’ COMMENT ‘是否删除’,
create_time
datetime NOT NULL COMMENT ‘创建时间’,
update_time
datetime NOT NULL COMMENT ‘更新时间’,
create_user
varchar(50) NOT NULL COMMENT ‘创建人’,
update_user
varchar(50) NOT NULL COMMENT ‘更新人’,
ts
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘时间戳’,
PRIMARY KEY (group_id
) /*T![clustered_index] CLUSTERED */,
KEY idx_parent_group_id
(parent_group_id
) COMMENT ‘父组索引’,
KEY idx_group_creator_id
(group_creator_id
) COMMENT ‘group_creator_id 索引’,
KEY idx_parent_group_id
(parent_group_creator_id
) COMMENT ‘父组创建者id索引’
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT=‘组基本信息表’
查询语句
执行计划sql:select group_id, group_creator_id from group_info where group_creator_id in ( ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ?) and group_state = 1 and is_delete = 0 order by group_id desc limit 10
压测sql:select group_id, group_creator_id from group_info where group_creator_id in ( ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ?) and group_state = 1 and start_time < now() and end_time > now() and is_delete = 0 order by group_id desc limit 11
【背景】 做过哪些操作
执行计划:
EXPLAIN_ANALYZE.xlsx (9.8 KB)
【现象】 业务和数据库现象
压测只能到85QPS,只有一台tikv CPU 保持90%以上,其余六台机器都在15%以下
【问题】 当前遇到的问题
性能比想象中的低太多,求优化建议
一个疑惑点:tikv第二阶段,条件过滤,感觉找够10条即可,为什么要把满足条件的1528全找到?
明白回表数据太多,性能会差,也想确认下,即便是只命中单tikv,会这么差么?
因为正常执行sql,才30ms左右,有性能很好的感觉
(试用新人,不过原理学的多,应该能听懂)
【业务影响】
【TiDB 版本】
5.3
公司集群,没办法执行脚本