写点什么

深入揭秘 TiDB LTS v8.1.0:为何这次更新是数据管理者的福音?

  • 2024-05-31
    北京
  • 本文字数:3794 字

    阅读完需:约 12 分钟

原文来源:https://tidb.net/blog/4efefe7b

本文作者:宋日杰 (Roger Song) PingCAP 产品经理



成都活动回顾 & PPT 下载:https://asktug.com/t/topic/1024778

视频回顾:https://www.bilibili.com/video/BV1Vp421Q78p‍

前言

作为 PingCAP 的 PM 资深成员,我有幸向大家介绍 TiDB 的最新长期支持版本——TiDB 8.1.0 LTS。在这次更新中,我们不仅关注了性能和扩展性的提升,更在稳定性、SQL 和数据库管理等方面进行了深入优化。


结合演讲实录和提供的 PPT 内容,以下是对 TiDB LTS v8.1.0 的揭秘文章的细化:‍

功能增强概览


TiDB 8.1.0 LTS 版本在性能、扩展性、稳定性、SQL 和数据库管理等方面进行了显著的功能增强。以下是一些关键点:


性能和扩展性


  • 自动统计信息收集引入了优先级队列,优化了统计信息的收集顺序。

  • 执行计划缓存现在支持包含“分区表”和“生成列”的计划,扩展了计划缓存的应用场景。

  • BR 快照恢复速度得到提升,建表性能提升了 10 倍。

  • 新增支持大量函数下推,优化了 JSON 多值索引的执行计划选择。

  • 通过 Active PD Follower 提升 PD Region 信息查询服务的扩展能力(实验特性)。

  • 支持拆分 PD 功能为微服务,进一步提高了系统的可扩展性(实验特性)。


在性能方面,我们引入了自动统计信息收集的优先级队列,这一改进显著优化了统计信息的收集顺序。数据库自动统计信息收集一般需要比较长的时间来完成,在这个过程中,当出现 DDL 变更,TiDB 会动态调整统计信息的收集队列,保证优先处理价值更高的对象,比如新建的索引,减少因为统计信息滞后造成的性能问题,提升整个集群的性能。


此外,我们提升了 BR 快照恢复速度,这对于需要快速恢复大规模数据集的场景至关重要。在实践中,这意味着在数据库备份后,恢复操作可以节省大量时间,从而减少业务中断的影响,也能够更快速的从备份创建出测试环境。‍

数据迁移

  • TiCDC 支持 Simple 协议和 Debezium 协议,扩展了数据同步的支持场景。

  • 支持 IMPORT INTO … FROM SELECT 语法,增加了数据导入的灵活性。

  • 全局排序成为正式功能,大幅提升了大规模数据的批量导入速度。

  • Data Migration (DM) 正式支持迁移 MySQL 8.0,扩大了数据迁移的兼容性。

  • TiCDC 支持通过双向复制模式同步 DDL 语句,简化了利用 TiCDC 构建多活集群场景的运维操作。


数据迁移,无缝过渡:以一个实际案例来说明,假设一个大型电商平台需要将数据从 MySQL 迁移到 TiDB,以应对“双 11”期间的高并发和大数据量挑战。使用 DM 工具,他们可以无缝迁移数据,同时保证数据的完整性和一致性。


在迁移过程中,利用 IMPORT INTO … FROM SELECT 语法,他们能够对大型表的数据进行快速的整理重构,去除冗余数据,满足系统迁移的需要。


此外,考虑到电商平台需要处理大量的订单和交易数据,全局排序利用多个 TiDB 节点同时对数据进行加载,并保证每个节点加载的数据间不交错,能够进一步提升数据的导入速度,降低数据导入需要的时间。‍

稳定性

  • 跨数据库执行计划绑定,简化了执行计划的管理开销。

  • 自动终止长时间未提交的空闲事务,减少了系统资源的浪费。

  • TiProxy 成为正式功能,维持应用连接的稳定性。

  • Runaway Query 管理成为正式功能,有效控制突发性能问题的影响范围。

  • 周期性全量数据整理和 Schema Meta 缓存作为实验特性,旨在进一步提升系统稳定性。

  • 处理更大事务的批量 DML 和 TiDB 的并发 HashAgg 算子支持数据落盘,提升了事务处理能力及执行稳定。


稳定性是数据库的基石。在 TiDB 8.1.0 LTS 中,我们通过跨数据库执行计划绑定,确保了不同数据库间的查询计划一致性。这在 SaaS 或 PaaS 平台中尤为有用,因为它们通常需要为多个租户提供服务,而这些租户的数据库结构往往是相同的。


以一个具体的场景为例,假设一个 SaaS 平台有上千个数据库,每个数据库都有相似的表结构。在 TiDB 8.1.0 LTS 中,管理员只需创建一个全局绑定,就可以为所有数据库的某个查询提供一致的执行计划,大大简化了管理复杂性。‍

SQL 和数据库管理


  • 支持观测索引使用情况,提供了更细致的索引使用数据。

  • 支持将 general log 写入独立文件,增强了日志管理的灵活性。

  • 增强了资源管控相关的观测性,提供了更全面的资源使用信息。

  • 支持自定义精度 div_precision_increment,提升了数据类型的灵活性。

  • LOAD DATA 支持显式事务和回滚,增强了数据加载的安全性。


在 SQL 和数据库管理方面,我们新增了对索引使用情况的观测,这使得 DBA 能够更准确地识别和处理无用或低效的索引。例如,通过 information_schema.CLUSTER_TIDB_INDEX_USAGE 内存表,DBA 可以监控索引的选择率,进而做出是否删除或优化索引的决策。视图 sys.schema_unused_indexes 中会列出所有 TiDB 实例启动之后从未被访问过的索引。


此外,我们支持将 general log 写入独立文件,这为需要长时间保存日志以满足合规要求的客户提供了便利。现在,客户可以将日志写入单独的文件,并且利用 TiDB 的原生压缩功能,有效管理日志存储。‍

重点功能介绍

内存表 information_schema.CLUSTER_TIDB_INDEX_USAGE‍

  • 用于观测索引选择,识别无用或低效索引。

  • 保存在每个 TiDB 实例的内存中,重启后清空。

  • 视图 sys.schema_unused_indexes 基于内存表的结果,列出所有 TiDB 实例启动后未被用到的索引。‍

跨数据库执行计划绑定


  • 针对 SaaS 或 PaaS 平台的典型建模,用户按 schema 划分,每个 schema 的表结构相同。

  • 多数情况下,针对一个 schema 的执行计划绑定适用于所有 schema,但需要逐一创建。开启跨数据库绑定后,可以创建全局绑定,简化了执行计划的管理。

Runaway Queries 管理


  • 识别执行时间长的查询,匹配查询文本、查询 Pattern、执行计划。

  • 对识别出的查询进行处置,如记录、降低优先级(限流)、取消查询等。

TiDB 并行执行框架


  • 将一个任务拆分到多个 TiDB 节点并行执行,提高任务处理速度。

  • 支持共享临时存储,可选配置以加速性能。

  • TiDB 节点角色设置,区分数据库服务和并行任务的角色。

未来规划:宏伟蓝图


TiDB 内核的未来演进集中在以下几个方面:‍

可靠性

  • 完善 TiDB 和 TiKV 的内存保障机制,减少内存使用问题。

  • 自适应并行统计信息采集,减少 I/O 开销,确保统计信息的时效性。

  • 资源管控动态限流运行中的重 SQL,保证集群稳定。

  • 增强函数下推和操作符落盘,提升 SQL 运行时的稳定性。

  • Cascades 优化器框架演进,为复杂查询提供更好的执行计划。

  • 实例级通用执行计划缓存,减少重复编译的开销。‍

扩展性


  • 稳定支持 500TB+ 的集群,单集群百万表和分区。

  • PD 心跳服务拆分微服务,支持更大规模数据量

  • 优化数据字典、统计信息缓存的开销,支持更大规模表和分区的数量。

  • 优化大规模数据对象的数据字典查询性能。支持不限大小的事务。

性能

  • 降低延迟,增强热点数据处理性能,减轻网络或 I/O 抖动造成的影响。

  • TiKV 存储层缓存,加速 MVCC 数据读取性能。优化热点场景下的读写性能。新的 DDL 框架加速各类 DDL 操作。

  • 提升全量数据库和 PiTR 速度,支持 PB 级别的数据量。

  • 提升 DM 全量数据迁移的速度。优化 TiKV GC、I/O 抖动造成的写入延迟,优化 PD Leader 迁移的延迟影响。

  • 稳定并增强缓存表性能。

可诊断性

  • 增强端到端观测和历史负载的观测,提升问题诊断的用户体验

  • 增强热点的识别和诊断能力,快速定位热点相关的表和 SQL,并提供表级别数据打散。

  • 提升端到端 SQL 运行时间诊断能力。

  • 持久化历史负载,自动建议索引、SQL 绑定等常用优化手段,提供集群性能诊断。


未来我们将继续在可靠性、扩展性、性能和可诊断性等方面进行深入研发。我们的目标是稳定支持 500TB+ 的集群规模,单集群百万表和分区,同时降低延迟,增强热点数据处理性能。


  • 在可靠性方面,我们将完善 TiDB 和 TiKV 的内存保障机制,并通过自适应并行统计信息采集,减少 I/O 开销,确保统计信息的时效性。

  • 扩展性方面,我们将优化 PD 心跳服务,支持更大规模数据量,并优化数据字典、统计信息缓存的开销,以支持更大规模表和分区的数量。

  • 性能优化上,我们将通过 TiKV 存储层缓存加速 MVCC 数据读取性能,并优化热点场景下的读写性能,以减轻网络或 I/O 抖动造成的影响。


最后,在可诊断性上,我们将增强端到端观测和历史负载的观测,提升问题诊断的用户体验,并持久化历史负载,自动建议索引、SQL 绑定等常用优化手段,提供集群性能诊断。‍

结语

随着 TiDB 8.1.0 LTS 版本的发布,我们不仅为用户带来了一系列令人激动的新特性和改进,更为未来的发展奠定了坚实的基础。


在这个版本中,我们特别强调了性能、扩展性、稳定性以及数据迁移等方面的关键进展,这些都是构建企业级数据库解决方案不可或缺的部分。


通过引入自动统计信息收集的优先级队列、提升 BR 快照恢复速度、增强数据迁移工具 DM 和 TiCDC,以及完善 JSON 多值索引的执行计划选择,我们展示了 TiDB 在处理大规模数据集、提供高效数据迁移解决方案以及优化 SQL 性能方面的能力。


同时,我们也在稳定性方面做出了重要贡献,如跨数据库执行计划绑定、自动终止空闲事务、TiProxy 和 Runaway Query 管理的正式功能化等,这些都极大地提升了 TiDB 的生产就绪特性。


展望未来,TiDB 团队将持续致力于提升内核及工具的稳定性和自愈能力,优化统计信息采集,动态限流运行中的重 SQL,并引入先进的优化器框架,以支持更大规模的集群和数据量。我们的目标是为用户提供一个既强大又易于管理的数据库系统,帮助他们应对日益增长的数据挑战。


在此,我想对所有支持和信任 TiDB 的用户表示最诚挚的感谢。我们期待与您携手,共同开启数据库技术的下一个篇章,共创美好未来。


用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
深入揭秘 TiDB LTS v8.1.0:为何这次更新是数据管理者的福音?_8.x 实践_TiDB 社区干货传送门_InfoQ写作社区