本文内容出自:PingCAP 高级顾问 蓝功儒老师
在 9 月 21 日 TiDB 新版本 Meetup 中,PingCAP 高级顾问蓝功儒老师为我们带来了关于 TiDB 新版本的深入分享。TiDB 作为一个分布式数据库,以其高性能、高可用性和易于扩展的特性,帮助企业灵活应对不同的业务场景。蓝老师在此次分享中,详细介绍了TiDB 新版本在性能、稳定性和可观测性方面的迭代和优化,推荐小伙伴们阅读!
TiDB 是一款什么样的数据库?
TiDB 是一款开源分布式关系型数据库,它支持标准的 SQL 和事务(ACID),高度兼容 MySQL 协议。TiDB 的设计理念是将数据库的水平扩展性、强一致性、高可用性以及云原生特性融为一体。随着版本的迭代,TiDB 在弹性扩展、分布式事务、强一致性基础上进一步针对稳定性、性能、易用性等方面进行优化和增强。
TiDB 新版本近期的关键迭代
性能和稳定性
在新版本中,TiDB 在性能和稳定性上做了关键迭代,包括但不仅限于:
- 网络 IO 优化:通过各类攒批方法减少网络交互次数,支持更多的下推算子,以及优化 Region 调度算法,显著提升了性能和稳定性。
- 缓存应用:在 block-cache 基础上,tidb-server 层引入了通用的执行计划缓存、Coprocessor 结果集缓存、小表缓存和 Schema Meta 缓存,减少了数据库的资源消耗。
- 稳定性提升:通过提升统计信息的准确度、锁定统计信息、周期性全量数据整理(实验特性),分布式框架、优先级队列进一步增强了数据库的稳定性以及可管控性。
可观测性提升
TiDB 新版本在端到端可观测性方面也做了大量工作以降低运维门槛:
- 日志标识和关联:通过注入会话别名,利用 Connection ID 连接日志中与会话相关的信息,方便快速的对事务进行端到端追踪,提升了端到端的可观测性。
- 索引选择观测:通过内存表 information_schema.(CLUSTER_)TIDB_INDEX_USAGE,可以识别并删除无用索引,识别低效的索引,为业务优化提供便利的手段。
资源管控
新版本引入了资源管控功能,可以更好地管理后台任务,进一步保障业务稳定性:
- 资源组配置:通过资源组的规则识别消耗超出预期的查询,主动限流或取消。
- Runaway Queries 管理:通过资源组规则,可以有效地管理长时间运行的查询,保障业务稳定性。
分布式执行框架
TiDB v7.1.0 开始引入了分布式执行框架,支持任务拆分到多个 TiDB 节点并行执行,提升了资源管理的效率和统一调度能力。
TiProxy
TiDB 在 v8 版本 TiProxy 正式 GA,这是一个由 TiDB 自研的负载均衡组件,能够通过 TiUP 一键部署,配置虚拟 ip 保障高可用,同时实现业务真正无感知的扩缩容。
TiDB 产品演进计划
蓝功儒老师还分享了在未来的版本中,TiDB 计划引入向量存储、TiKV 存储层缓存、Pipeline DML GA 等新特性,进一步提升性能和稳定性。
向量存储
TiDB 将支持向量存储,这将使得具备更全面的能力,可以真正做一个all in one 的云原生分布式 HTAP 数据库, TiDB 与 AI 的结合更加紧密。
存储层缓存
TiKV 存储层将增加缓存,支持配置最新几个版本号的数据存储在 tikv memory 中,加速高频次、高吞吐、高并发业务场景下 MVCC 数据读取性能。这些改进将进一步降低TiDB 的延迟,保障 SQL 执行的稳定性。
Pipeline DML GA
Pipeline DML 将在 V8.5 版本中正式发布,提供更稳定更高效的大事务支持。这意味着 TiDB 具备稳定高效处理 TB 级别大事务的能力,尤其是在处理大量数据更新和插入操作时。
PD 微服务化
PD 的职能,如 tso 分发服务、调度服务,将被拆分成多个微服务,以更好地应对高并发、高吞吐等高性能要求场景。这种微服务化的架构将降低 PD leader 失败的影响,避免 PD 单个实例的硬件资源成为服务瓶颈。未来也会将 PD 的心跳检测服务微服务化,进一步避免单点瓶颈以及故障的风险。
https://pingcap-cn.feishu.cn/sync/YCoYd6VZ5swdjebitGIcHkbNnxb
Q&A 环节
升级目标版本如何选择?版本升级是否一定是越新越好?
- 选择 LTS 版本:推荐用户选择长期支持(LTS)版本,如 v6.1、v6.5、v7.1、7v.5,因为这些版本在小版本号达到 3 以上时,通常稳定性已经非常好。
- 评估当前版本:如果用户当前使用的是 V6 以下的版本,建议升级到 v7.5.3 版本。若当前使用的是 v6.5 版本且稳定性良好,可以考虑小版本升级,例如从 v6.5.5 升级到 v6.5.10 或 v6.5.11。
TiDB v7.5 和 v8.1 的区别是怎样的,怎么选择?
- v8.1 版本在统计信息收集、稳定性方面进行了改进,如:V8.3 版本支持忽略列的统计信息;且 v8.1 提供了更多保障业务稳定性的手段,如分布式框架和 Resource Control
- 如果当前使用 V6 版本且稳定性良好,可以考虑不升级;但如果数据量预期会大幅增加,建议升级到 V7.5.3 或 V8.1.1 版本。
v6 版本集群性能没有问题,有必要升级到 v7 或 v8 吗?
- 如果 V6 版本的统计信息选择的是老版本,且数据量没有太大增长,可以选择不升级,保持稳定运行。
- 如果数据量预期会达到 200 TB 或 300 TB,建议升级到 V7.5.3 或 V8.1.1 版本。
列存储相比传统的行存储会占用更多空间吗?
- 通常,列存的压缩比通常比行存高约 10 倍。例如,在TiDB中,如果行存的数据量约为 10TB,且全部数据同步列存引擎TiFlash中后,数据量可能在 1TB 左右。
- TiFlash(TiDB 的列存引擎)的采用 DeltaTree 引擎,相较传统 OLAP 数据,数据压缩比有一定牺牲,但可以 ms 级别的将 tikv 中的 update 和 delete 数据同步到 tiflash 中。
TiDB 未来版本中是否有类似于binlog的功能,可以分析日志?
- TiDB 在 V4 之后推出了 TiCDC,目的是替换原有的 binlog 功能。
- TiCDC 通过并行处理和 TCC(两阶段提交)提高了同步效率;且支持同步到 Kafka 或 MySQL,有助于进一步使用数据。
再次感谢蓝老师为我们分享了 TiDB 新版本的诸多亮点和未来的发展方向!TiDB 也会继续不断在性能、稳定性和易用性方面不断进化,为 TiDB 的使用者们提供更加全面和强大的数据库解决方案。