深入揭秘 TiDB LTS v8.1.0:为何这次更新是数据管理者的福音?
原文来源: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 的用户表示最诚挚的感谢。我们期待与您携手,共同开启数据库技术的下一个篇章,共创美好未来。
评论