本文作者:宋日杰 (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的用户表示最诚挚的感谢。我们期待与您携手,共同开启数据库技术的下一个篇章,共创美好未来。