星辰考古: TiDB 3.x 忆水木

星辰考古: TiDB 3.x 忆水木-1

前情回顾

在前两节中,我们共同“回忆”了 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 3.x 忆水木-2

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 等特性。
  • 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.x 忆水木-3
(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)(实验特性)

批注

  1. 关于 RBAC 的相关内容,请访问官方文档:
    https://docs.pingcap.com/zh/tidb/stable/role-based-access-control

  2. 为提升系统安全性,企业版新增特性: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