0
1
1
0
专栏/.../

TiDB 产品新高度 — v8.5.0 LTS 版本发布

 数据源的TiDB学习之路  发表于  2024-12-27

TiDB v8.5.0 LTS 版本于 2024 年 12 月 19 日 正式对外发布,相比于前一个 LTS(即 8.1.0 版本),v8.5.0 版本包含 8.2.0-DMR8.3.0-DMR8.4.0-DMR 中已发布的新功能、提升改进和错误修复。那么 v8.5.0 LTS 版本到底有哪些改进呢,本文从功能、性能、可扩展性、稳定性与高可用、可观测性、安全等方面逐一进行介绍。

功能

v8.5.0 有很多值得注意的功能点,如外键 GA、在线修改 DDL 参数、分区表全局索引、TiProxy 功能增强、向量搜索功能等。

  • 外键功能 GA,彻底满足对外键有强需求场景

    • 从 v6.6.0 版本开始,TiDB 就支持外键以及外键约束功能,不过一直处于实验特性。终于在 v8.5.0 这个版本中,外键功能正式 GA。
    • 适用场景:OA 办公类系统会经常性的用到外键的功能,相信在 v8.5.0 版本的支持下 TiDB 能够更好的支持像 OA 这样大量依赖外键功能的业务系统。
  • 支持在线修改 DDL 参数,更方便控制运行中的 DDL 语句

    • tidb_ddl_reorg_batch_size 和 tidb_ddl_reorg_worker_cnt 参数分别用来设置 DDL 操作 re-organize 阶段的 batch size 和 并发度,从 v8.3.0 版本开始支持 session 级别设置,避免了修改参数对所有 DDL 产生影响,但修改参数前仍然需要先停止 DDL 任务。v8.5.0 支持通过 ADMIN ALTER DDL JOBS 来动态修改 DDL 参数,包括并发度 THREAD、批大小 BATCH SIZE 和 最大写速率 MAX_WRITE_SPEED。有关使用 ADMIN ALTER DDL JOBS 在线修改 DDL 参数的方法可参考 ADMIN ALTER DDL JOBS
    • 适用场景:需要在线修改 DDL 参数提升 DDL 效率或减少 DDL 对资源占用时。
  • 分区表全局索引,扩展分区表使用场景

    • v8.4.0 版本开始成为正式功能,该功能扩展了 TiDB 分区表的使用场景,提升了分区表的性能,降低了分区表在一些查询场景的资源消耗。详情参考 分区表全局索引
    • 适用场景:有分区表且需要基于非分区键查询使用的场景。
  • 增强 TiProxy,支持高可用及流量捕捉回放

    • TiProxy 是 TiDB 自己的高可用负载均衡组件,可以用于替代 F5、HAProxy 等外部负载均衡器。在 v8.2.0 中 TiProxy 支持多种负载均衡策略(参考 TiProxy 负载均衡策略);在 v8.3.0 中 TiProxy 内置虚拟 IP 管理;在 v8.4.0 中 TiProxy 增加了流量捕捉和回放功能(实验特性,参考 TiProxy 流量回放)。
    • 适用场景:连接保持、频繁扩缩容、TiDB server OOM、CPU 负载不均等场景较为适用。
  • 支持向量搜索功能,增强 AI 处理能力

    • v8.4.0 开始引入向量功能,目前仍处于实验特性。向量搜索是一种基于数据语义的搜索方法,可以提供更相关的搜索结果。详细参考 向量搜索概述
    • 适用场景:检索增强生成 (Retrieval-Augmented Generation, RAG)、语义搜索、推荐系统等多种场景。

性能

TiDB v8.5.0 在性能方面从多个维度降低数据处理延迟,如建表、多版本的数据查询性能优化、并行排序、并行获取 TSO、DELETE 操作优化、缓存表性能、Hash Join 算法优化等。

  • 加速建表 GA,批量建表提升 10 倍+

    • 实际上从 v7.6.0 版本开始,TiDB 就实现了加速建表,通过参数 tidb_ddl_version 控制,此参数在 v8.0 版本更改为 tidb_enable_fast_create_table,在 v8.5.0 默认打开,而之前版本默认是关闭的。
    • 适用业务场景:需要批量建表时。
  • MVCC 内存引擎(IME),频繁更新或版本较多场景性能更优

    • TiDB 中支持多版本 MVCC,当新写入的数据覆盖旧的数据时,旧的数据不会被替换掉,而是与新写入的数据同时保留,并以时间戳来区分版本。老版本数据保留的时长跟 GC 的时间间隔相关,如果 GC 时间间隔范围内数据更新频率很高,则较多版本的历史数据将导致扫描性能下降。v8.5.0 版本引入 MVCC 内存引擎,机制是会在内存中缓存最新写入的 MVCC 版本,并实现独立于 TiDB 的 MVCC GC 机制,使其可以快速 GC 内存中的 MVCC 记录,从而减少查询时扫描的版本个数。
    • 适用场景:需要查询频繁更新或删除的记录,或需要 TiDB 保留较长时间的历史版本。IME 功能默认关闭,如果想启用,需要在 TiKV 配置文件中将 in-memory-engine.enable 设置为 true。
  • 并行排序,大数据排序性能更佳

    • v8.2.0 版本开始支持,在此之前 SQL 中的排序操作都是非并行的方式,大量数据的排序动作性能会受到影响。现在版本中默认并行排序,并行度受参数 tidb_executor_concurrency 影响,默认并发为 5。
    • 适用场景:在有大量数据排序的场景中,性能更佳。
  • 优化 KV 请求批处理策略,高吞吐场景适用

    • v8.3.0 版本支持,此功能表示 TiDB 根据最近请求的到达时间间隔动态批处理。由参数 tikv-client.batch-policy 控制,默认值为 standard 表示打开此优化。
    • 适用场景:高吞吐场景。
  • 并行获取 TSO,减少获取 TSO 耗时

    • v8.4.0 版本支持,由参数 tidb_tso_client_rpc_mode 控制,用来设置 TiDB 向 PD 发送 TSO RPC 请求时使用的模式。默认值为 default,表示 TiDB 将一段时间内当前节点的所有取 TS 操作攒批到一个 TSO RPC 请求中发送给 PD 批量获取 TS,每次取 TS 操作的耗时由等待攒批的时间和进行 RPC 请求的时间组成。也可以设置为 parallel 模式或 parallel-fast 模式,当 TSO 等待时间明显时,可以考虑此值。
    • 适用场景:获取 TSO 耗时较长时。
  • 降低 DELETE 操作开销,提升 DELETE 性能

    • v8.4.0 版本支持,减少 DELETE 操作从 TiKV 获取的列信息数量,降低 DELETE 操作的资源开销。参考 https://github.com/pingcap/tidb/issues/38911。
    • 适用场景:DELETE 相关场景。
  • 优化缓存表场景性能,部分提升 5 倍+

    • v8.4.0 版本支持,参考 https://github.com/pingcap/tidb/issues/43249
    • 适用场景:用到缓存表相关场景。
  • Hash join 算法优化,提升 hash join 性能

    • v8.4.0 版本中引入,当前仍然属于实验特性。通过参数 tidb_hash_join_version 控制 hash join 的算法,默认为 legacy 表示使用原有的算法,当修改为 optimized 代表使用优化算法。
    • 适用场景:希望提升 hash join 性能的场景。
  • 默认允许 Projection 下推,提升部分 projection 场景性能

    • v8.3.0 版本引入,通过参数 tidb_opt_projection_push_down 控制,当前版本默认打开,表示允许优化器将 Projection 算子下推到 TiKV。如果从 v8.3.0 之前版本升级上来,此参数默认为 off。
    • 适用场景:部分 projection 相关的场景。

可扩展性

在可扩展性方面,TiDB 的一个目标是能够支持超大规模的集群。为了实现超大规模集群,v8.5.0 版本中实现了 schema 缓存内存限制、Active PD Follower、实例级执行计划缓存等,以应对百万级对象的 SaaS 类场景。

  • Schema 缓存内存限制 GA,让大规模集群变的更轻松

    • 在以前的版本中,如果 schema 元数据信息太多,会导致内存占用过高。v8.4.0 开始支持此功能,使用 LRU 算法缓存和淘汰相应的 Schema 元数据信息,有效减少内存占用。该功能默认开启,通过 tidb_schema_cache_size 参数控制缓存的大小,默认是 512 MB。
    • 适用场景:SaaS 类场景,集群有几十万甚至百万级的表或分区时。这个功能可以使得超大规模的 TiDB 集群成为可能。
  • Active PD Follower GA,更强的可扩展性能力

    • 如果集群中的 Region 过多, PD Leader 处理心跳和调度任务的开销也较大,导致 CPU 繁忙。TiDB v7.6.0 就开始支持 Active PD Follower 功能作为实验特性,v8.5.0 版本正式 GA。通过参数 pd_enable_follower_handle_region 开启此功能,默认关闭。开启此功能后,TiDB 获取 region 信息后会将请求均衡分发到所有 PD 节点,从而减轻 PD Leader 压力。
    • 适用场景:同样是 SaaS 类场景,表或 region 非常多时。
  • 实例级执行计划缓存,降低大量执行计划缓存导致的内存占用

    • v8.4.0 版本引入,当前仍然属于实验特性。之前版本中执行计划缓存是 session 级别的,因此当并发较高时执行计划缓存会占用更多的内存。实例级执行计划缓存功能由参数 tidb_enable_instance_plan_cache 控制,默认关闭,开启后表示允许同一个 TiDB 实例的所有会话共享执行计划缓存,从而提升内存利用率。

稳定性与高可用

在稳定性和高可用方面,v8.5.0 也做了大量的工作,如 PD 请求限速、统计信息忽略不必要列或可控制统计信息并发、Runnaway Queries 支持更多条件并可在捕获后切换资源组、支持对后台任务的资源占比控制、HashAgg 的算子落盘等。

  • 支持限制 PD 请求的速率和并发度,进一步提升稳定性

    • 突然性的大量请求发送到 PD 时,可能会导致 PD 负载过高。v8.5.0 版本支持通过 pd-ctl 来限制 PD 处理请求的最大速率和并发度,提升 PD 的稳定性。pd-ctl 中的具体命令为 config set service-middleware,参考 PD Control 使用说明
    • 适用场景:当 PD 有突发性的大量请求时。
  • 统计信息忽略不必要列,减少统计信息收集的资源消耗

    • v8.3.0 版本引入,允许通过 ANALYZE TABLE TableName PREDICATE COLUMNS 收集必要的列,从而可以加快统计信息收集的速度,同时也降低了系统开销,改善了资源利用率。
    • 适用场景:表字段较多,收集统计信息耗时或耗费资源较多的场景。
  • 支持设置统计信息收集并发度,保证大集群执行计划的稳定性

    • v8.4.0 版本引入,通过参数 tidb_auto_analyze_concurrency 控制,设置单个自动统计信息收集任务内部的并发度,默认值为 1,可根据集群资源情况提高该并发度,从而加快统计信息收集任务的执行速度。
    • 适用场景:希望加快统计信息收集任务的场景。
  • Runaway Queries 支持更多触发条件并支持切换资源组

    • v8.4.0 支持,可以根据语句执行时间 EXEC_ELAPSED、Coprocessor 处理Key数量 PROCESSED_KEYS、消耗 RU 数来识别。对应操作支持 DRYRUN、COOLDOWN、KILL、SWITCH_GROUP(V8.4 新增,表示可以将识别到的查询切换到指定的资源组继续执行)。
    • 适用场景:通过 Runway Queries 更精准的进行控制的场景。
  • 支持为资源管控的后台任务设置资源使用上限

    • v8.4.0 支持,资源管控可以设置 BACKGROUND 任务的 UTILIZATION_LIMIT,表示限制每个 TiKV 节点上后台任务最大可以使用的资源百分比 (0-100)。比如 ALTER RESOURCE GROUP `default` BACKGROUND=(TASK_TYPES='br,ddl', UTILIZATION_LIMIT=30); 表示修改 default 资源组,将 br 和 ddl 标记为后台任务,并配置后台任务最多可使用 TiKV 节点总资源的 30%。
    • 适用场景:需要对后台资源进行更准确的资源限制的场景。
  • 并行 HashAgg 支持落盘

    • v8.2.0 成为正式功能,由参数 tidb_enable_parallel_hashagg_spill 控制,默认打开,表示在任意并发条件下,HashAgg 算子都可以根据内存使用情况自动触发数据落盘,从而兼顾性能和数据处理量。
    • 适用场景:有 HashAgg 的场景。

可观测性

在可观测性方面,增加了对 TiKV 和 TiDB 的 CPU 时间观测能力,以及可以按表或表级别的 TiKV CPU 时间观测,从而可以更方便的诊断热点问题或 CPU 消耗问题。

  • 内存表中显示 TiKV 和 TiDB CPU 时间

    • v8.4.0 引入,将 CPU 时间合入系统表中展示,与会话或 SQL 的其他指标并列,方便从多角度对高 CPU 消耗的操作进行观测,提升诊断效率。
    • 适用场景:适用于诊断实例 CPU 飙升或集群读写热点等场景。
  • 按表或库级别聚合 TiKV 的 CPU 时间

    • v8.4.0 引入,当热点问题不是由个别 SQL 语句引起时,利用 Top SQL 中按表或库聚合的 CPU 时间,能够协助用户快速发现造成热点的表或者应用程序,从而大大提升热点问题和 CPU 消耗问题的诊断效率。
    • 适用场景:诊断热点问题和 CPU 消耗问题。

安全

安全性上,主要针对备份数据的加密及 TiKV 静态加密的增强,如下所示。

  • BR 支持客户端进行快照备份数据和日志备份数据加密 GA

    • 快照备份数据的客户端加密功能在 v5.3.0 就已经支持,作为实验特性。日志备份数据的客户端加密功能在 v8.4.0 支持,也是实验特性。这两个功能在 v8.5.0 里面都正式 GA。
    • 适用场景:对备份数据有加密要求的场景。
  • TiKV 静态加密支持 Google Cloude KMS

    • 此功能于 v8.0.0 成为实验特性,v8.5.0 正式 GA。使用该功能需要在 Google Cloud 上创建一个密钥,然后在 TiKV 配置文件中添加 [security.encryption.master-key] 部分的配置。
    • 适用场景:在 Google Cloud 上有静态加密需求。

有关 v8.5.0 LTS 的更多功能和改进,可参考 TiDB 8.5.0 Release Notes 获取详细信息。

0
1
1
0

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论