0
1
1
0
专栏/.../

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

 TiDB社区小助手  发表于  2024-05-24

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

no-alt

成都活动回顾& 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 的揭秘文章的细化:‍

功能增强概览

no-alt

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 和数据库管理

no-alt

  • 支持观测索引使用情况,提供了更细致的索引使用数据。
  • 支持将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实例启动后未被用到的索引。‍

跨数据库执行计划绑定

no-alt

  • 针对SaaS或PaaS平台的典型建模,用户按schema划分,每个schema的表结构相同。
  • 多数情况下,针对一个schema的执行计划绑定适用于所有schema,但需要逐一创建。开启跨数据库绑定后,可以创建全局绑定,简化了执行计划的管理。

Runaway Queries管理

no-alt

  • 识别执行时间长的查询,匹配查询文本、查询Pattern、执行计划。
  • 对识别出的查询进行处置,如记录、降低优先级(限流)、取消查询等。

TiDB并行执行框架

no-alt

  • 将一个任务拆分到多个TiDB节点并行执行,提高任务处理速度。
  • 支持共享临时存储,可选配置以加速性能。
  • TiDB节点角色设置,区分数据库服务和并行任务的角色。

未来规划:宏伟蓝图

no-alt

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

可靠性

  • 完善TiDB和TiKV的内存保障机制,减少内存使用问题。
  • 自适应并行统计信息采集,减少I/O开销,确保统计信息的时效性。
  • 资源管控动态限流运行中的重SQL,保证集群稳定。
  • 增强函数下推和操作符落盘,提升SQL运行时的稳定性。
  • Cascades优化器框架演进,为复杂查询提供更好的执行计划。
  • 实例级通用执行计划缓存,减少重复编译的开销。‍

扩展性

no-alt

  • 稳定支持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的用户表示最诚挚的感谢。我们期待与您携手,共同开启数据库技术的下一个篇章,共创美好未来。

0
1
1
0

声明:本文转载于 https://mp.weixin.qq.com/s/1F0358pImpOTgd-nf_UWUg

评论
暂无评论