星辰考古: TiDB 3.x 忆水木
前情回顾
在前两节中,我们共同“回忆”了 TiDB v1/v2 的相关内容,包括如何手动搭建 TiDB 和使用 TiDB Ansible 搭建 TiDB。
- 星辰考古:TiDB v1.0 再回首
- 星辰考古:TiDB v2.x 回忆杀
本节将继续讨论 TiDB v3,在 TiDB 3.x 中处理 AP 业务的主力仍然是 TiSpark,不过 TiFlash 已经初现。
TiDB 3.x 整体架构图再“升级”。
TiDB v3 时代,TiDB 已在 500+ 用户的生产环境中长期稳定运行,涵盖金融、保险、制造,互联网,游戏等领域,涉及交易、数据中台、历史库等多个业务场景。
如今,TiDB 现已被 3000 多家不同行业的领先企业应用在实际生产环境。
TiDB 3.x 时间线
TiDB 2.x 的时间线是 2018.4~2019.12,TiDB 3.x 的时间线是 2019.1~2020.12。
- 2019-01-19,TiDB 发布 3.0 Beta 版。相比 v2.1 版本,该版本对系统稳定性、优化器、统计信息以及执行引擎做了很多改进。
- 2019-06-28,TiDB 发布 3.0 GA 版本。相比于 v2.1,v3.0 版本在以下方面有重要改进:
- 稳定性方面,显著提升了大规模集群的稳定性,集群支持 150+ 存储节点,300+TB 存储容量长期稳定运行。
- 优化 Raft 副本之间的心跳机制,按照 Region 的活跃程度调整心跳频率,减小冷数据对集群的负担。
- 热点调度策略支持更多参数配置,采用更高优先级,并提升热点调度的准确性。
- 优化 PD 调度流程,提供调度限流机制,提升系统稳定性。
- 新增分布式 GC 功能,提升 GC 的性能,降低大集群 GC 时间,提升系统稳定性。
- 易用性方面有显著的提升,降低用户运维成本,例如:标准化慢查询日志,制定日志文件输出规范,新增
EXPLAIN ANALYZE
,SQL Trace 功能方便排查问题等。 - 性能方面,与 2.1 相比,TPC-C 性能提升约 4.5 倍,Sysbench 性能提升约 1.5 倍。因支持 View,TPC-H 50G Q15 可正常运行。
- 新功能方面增加了窗口函数、视图(实验特性)、分区表、插件系统、悲观锁(实验特性)、SQL Plan Management 等特性。
- 稳定性方面,显著提升了大规模集群的稳定性,集群支持 150+ 存储节点,300+TB 存储容量长期稳定运行。
- 2019-12-31,TiDB 3.0.8 发布,2019 年 TiDB 3.0 系列共发版 14 次。
- 2020-04-16,TiDB 3.1 GA。
- 2020-06-04,TiDB 3.1.2 发布,这是 TiDB 3.1 系列的最后一个小版本。
- 2020-12-25,TiDB 3.0.20 发布,这是 TiDB 3.0 系列的最后一个小版本。
(TiDB 3.0 与 2.1 的性能测试对比图)
TiDB 3.x 新特性
TiDB 3.x 历经两年打磨,产品性能和质量都改进很多,不过由于篇幅原因,这里不再列举优化项和修复项。
下面只摘录了部分重要的新特性,以供参考。
TiDB
- 支持 View #8757
- 支持 Window Function,支持所有 MySQL 8.0 中的窗口函数 #8630
- 支持 RANGE/HASH PARTITION
- 新增
SPLIT PARTITION TABLE
语法,支持分区表切分 Region 功能 #13929 - 新增分区表自动更新统计信息的功能 #14566
- 支持字符集从 utf8 转换到 utf8mb4 的功能
- 默认字符集从 utf8 变为 utf8mb4 #7965
- 新增
server-version
配置项来控制修改 TiDB server 版本的功能 #13906 - 支持
admin show next_row_id
,方便获取下一行 ID #8242 - 支持用
_tidb_rowid
做点查 #13416 - 在
information_schema.processlist
表中支持显示内存使用信息 #12801 - 支持悲观事务模式(实验特性) #10297
- 提高在悲观事务和乐观事务冲突情况下的性能 #10881
- 新增基于角色的权限访问控制功能(RBAC)(实验特性)
批注
-
关于 RBAC 的相关内容,请访问官方文档:
https://docs.pingcap.com/zh/tidb/stable/role-based-access-control -
为提升系统安全性,企业版新增特性:IP 白名单功能;Audit log 功能;加密存储。
PD
- 新增从单个节点重建集群的功能
- 将 Region 元信息从 etcd 移到 go-leveldb 存储引擎,解决大规模集群 etcd 存储瓶颈问题 #1237
- 将 etcd 版本升级到 3.4.3 稳定版本,注意升级后只能通过 pd-recover 工具降级 #2058
- 更改 PD 的 copyright 信息 PingCAP, Inc 为 TiKV Project Authors #2777
批注:
查询 etcd 的版本:
curl -s http://localhost:2379/version