【新版本核心功能解读】TiDB v8.5.x 有哪些核心功能的优化?

一、查询优化器 & SQL 执行

版本 优化点
8.5.1 只读用户定义变量折叠为常量;含 nulleq 条件的笛卡尔积 Semi Join 转为等值 Semi Join
8.5.3 等值条件未命中 TopN 时行数估算从 0 修正为 1;IndexScan 计划构建减少 fmt.Sprintf 调用;closest-adaptive 副本读性能优化;merge sort 子任务调度优化
8.5.4 新增 semi_join_rewrite hint 支持 IN 子查询;低 NDV 列估算优化;Index Join + LIMIT OFFSET 估算优化;统计信息过期时越界估算策略优化;新建索引更易被优化器选中
8.5.5 IndexLookUp 下推到 TiKV(通过 hint 控制,减少跨节点 RPC);IndexHashJoin 增量处理降低内存峰值;expression.Contains 性能提升
8.5.6 外键检查支持共享锁(tidb_foreign_key_check_in_shared_lock,减少子表高并发写入时父表锁竞争);IN 谓词索引前缀列查询用 merge sort 保序减少扫描;多表 Join 重排序优化(tidb_opt_join_reorder_through_sel)
8.5.7 ORDER BY ... LIMIT 含 OR/IN 条件时 IndexMerge 更高效,支持 Limit 下推到部分路径;部分有序索引优化 TOPN(tidb_opt_partial_ordered_index_for_topn);高基数 GROUP BY 的 Stream Aggregate CPU 开销降低;大 IN 列表范围构建 CPU/内存优化;多索引表在代价估算前裁剪无关索引;INSERT ... ON DUPLICATE KEY UPDATE 减少表达式缓冲区分配;会话级 Prepared Statement 缓存(tidb_enable_cache_prepare_stmt)
8.5.8 含虚拟列的复合索引在列统计不可用时回退使用索引统计信息,提升选索引准确性

二、DDL 性能

版本 优化点
8.5.3 Global Sort 加唯一索引性能提升;大量外键场景建表加速;information_schema.tables 读取性能提升
8.5.4 DDL 内嵌 ANALYZE(ADD INDEX/MODIFY COLUMN 执行中自动收集新索引统计,避免上线后计划抖动);分区表非唯一列支持全局索引
8.5.5 有损 DDL 大幅加速:无数据截断时 BIGINT→INT 等操作从小时级降到秒/毫秒级,索引列场景最高提升 46 万倍;超大规模外键场景逻辑 DDL 性能提升 25 倍(1000 万表环境从 ~4 QPS 到 100 QPS);分布式 ADD INDEX 支持 ADMIN ALTER DDL JOBS 动态调整线程数/批次/写速
8.5.7 部分索引(Partial Index):CREATE INDEX ... WHERE ... 只索引满足谓词的行,减少索引存储和 DML 维护开销

三、TiKV 存储引擎

版本 优化点
8.5.2 import.num-threads 支持动态修改
8.5.3 SST ingest 不阻塞前台写入,降低 ADD INDEX 尾延迟;流控抖动优化;Raftstore CompactedEvent 移到 split-check worker 减少主线程阻塞;Raft Engine fetch_entries_to 减少锁竞争;KVDB/RaftDB 分离部署时 IO 抖动检测灵敏度提升(检测间隔 2s→100ms)
8.5.4 gRPC Raft 连接数和并发数自适应 CPU 核数(≥32 核时默认最多 4 连接);rocksdb.max-manifest-file-size 默认 128→256MiB,减少大量 SST 文件时频繁 manifest compaction;新增 gc.auto-compaction 配置组统一管理自动 compaction
8.5.5 统一读池 CPU 感知扩缩容,避免热点读下 CPU 饥饿;网络延迟纳入慢节点评分;Hibernate Region 获得多数票后立即休眠不再等待离线 learner;TiKV 优雅关闭(关节前主动转移 Leader,默认 20s 超时)
8.5.6 基于负载的 compaction(MVCC 读感知,优先 compact 读开销高的 Region);扩缩容时 stale range 直接删除而非走 SST ingest,降低对在线请求延迟影响
8.5.7 热点 Region 读 CPU 使用率通过 store heartbeat 上报 PD;资源管控新增前台流量保护 CPU 阈值配置
8.5.8 修复仅启用后台任务资源管控时写密集负载 5%~10% 性能下降;外部 SST ingest 与前台写入并发时 MVCC 一致性和写入延迟优化

四、PD 调度

版本 优化点
8.5.3 慢节点 Leader 驱逐后恢复时间 600s→900s
8.5.4 单表数据重分布(实验性):SHOW TABLE DISTRIBUTION 查看 + DISTRIBUTE TABLE 重平衡单表数据
8.5.5 网络慢节点检测与反馈机制:TiKV 探测节点间网络延迟并上报 PD,PD 限制向抖动节点调度 Leader、持续抖动则主动驱逐;PD 客户端熔断器(tidb_cb_pd_metadata_error_rate_threshold_ratio),保护 PD Leader 免受重试风暴
8.5.7 CPU 感知热点 Region 调度:PD 以读 CPU 使用率作为热点调度维度,解决 QPS/字节均衡但 CPU 不均的问题

五、TiFlash

版本 优化点
8.5.1 存算分离架构下计算节点从 S3 下载文件的异常重试策略优化
8.5.4 TiFlash 优雅关闭:关节前等待运行中 MPP 任务完成(默认 600s 超时),不再接受新任务
8.5.5 大表查询时存储快照获取最大重试次数增加;宽表场景 OOM 风险可观测性增强

六、备份恢复(BR)

版本 优化点
8.5.3 PITR 索引恢复改为并发修复,加速恢复;日志备份元数据支持按时间戳过滤减少读取量;Download API 支持按时间范围过滤备份数据
8.5.5 PITR 支持从压缩日志备份恢复(日志备份离线压缩为结构化 SST,恢复更快、存储更省、可减少全量快照频率);系统表恢复支持物理恢复(--fast-load-sys-tables)大幅加速;日志备份进行中可直接做快照恢复;PITR 支持表级恢复(通过 filter 只恢复指定表)
8.5.8 PITR 日志恢复阶段支持配置限速;AUTO_ID_CACHE=1 表恢复后首次 INSERT 重复键修复;停止日志备份后残留 GC Safepoint 清理

七、TiCDC 数据同步

版本 优化点
8.5.1 提前过滤未订阅事件,减少不必要的资源消耗
8.5.4 TiCDC 新架构(newarch=true):核心组件重写,近线性扩展性,支持百万表复制、更低资源消耗和延迟,高写入/频繁 DDL/扩缩容场景更稳定
8.5.7 新架构支持通过 dispatchers 配置表路由
8.5.8 忽略删除事件时优化扫描性能,减少大量删除负载追赶期间的 DML 解码;自适应扫描窗口算法提升 Event Service 内存压力下的稳定性和吞吐;Kafka Sink 校验流程轻量化(已有 Topic 不再重复校验 replication-factor);Claim-Check 模式下同一 Sink 所有 Encoder 共享实例减少外部存储连接开销;Kafka Sink 错误处理统一分类

八、数据导入(Lightning / IMPORT INTO)

版本 优化点
8.5.2 CSV 解析增加行宽检查防 OOM;Global Sort 启用时内存超 80% 的 OOM 修复
8.5.3 IMPORT INTO 启用 Global Sort 时禁用 TiKV import 模式;新增 Region split 和数据 ingest 流控接口
8.5.5 Parquet 文件解析机制增强,提升导入性能
8.5.8 IMPORT INTO 临时冲突删除提交错误后索引不一致修复;Parquet DECIMAL 重复字典编码静默写错数据修复;tidb 模式导入时 TiKV 崩溃修复

九、可观测性

版本 优化点
8.5.5 语句摘要表和慢查询日志新增 STORAGE_KV/STORAGE_MPP 字段,可按存储引擎过滤 SQL
8.5.6 慢查询日志多维细粒度触发规则(tidb_slow_log_rules,支持 Query_time/Digest/Mem_max/KV_total 组合,实例/会话/SQL 三级);WRITE_SLOW_LOG hint 强制记录;tidb_slow_log_max_per_sec 限流
8.5.7 Top SQL 支持 TiKV 网络流量和逻辑 IO 指标(Network Bytes / Logical IO Bytes,按 Query/Table/DB/Region 多维分析);慢查询日志记录客户端连接属性
8.5.8 OOM 诊断 Goroutine Profile 不再显著延长 Stop-the-World 暂停

十、安全与权限

版本 优化点
8.5.6 列级权限管理:支持 GRANT/REVOKE 到具体列,查询和执行计划构建时做列级权限检查
8.5.7 单用户连接数限制(max_user_connections 系统变量 + CREATE USER ... WITH MAX_USER_CONNECTIONS N)
8.5.8 PD /metric/query 接口 SSRF 漏洞修复;INFORMATION_SCHEMA.USER_ATTRIBUTES 越权读取修复;PD GlobalConfig gRPC etcd 越权访问修复;TiCDC Sink URI 校验失败时敏感信息泄露修复
1 个赞

越来越好

优秀!

1 个赞

功能都十分实用

给研发人员点个赞👍

非常好。当前生产版本v8.5.3

1 个赞

很好很好很好