一、查询优化器 & 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 校验失败时敏感信息泄露修复 |