GA 公告

Vitess 17 带来了多项全局可用(GA)的特性:

  1. VTTablet 设置连接池:这一功能最初在 v15 中引入,本次发布中默认启用。它简化了系统设置的管理和配置,为用户提供了更加流畅和便利的体验。
  2. 基于拓扑服务的 Tablet Throttler(也称为延迟限制器):现已成为 GA 功能,并默认启用。

MySQL 兼容性改进

Vitess v17 对 MySQL 兼容性进行了全面增强,包括以下内容:

  • 新增对语句 PrepareExecuteDeallocate 的支持,同时还支持许多新的函数(包括比较运算符、数值函数、日期时间函数、JSON 函数等)。
  • 查询规划器(Query Planner)改进:规划器显著优化了复杂操作(如聚合、分组和排序)的查询计划,这提升了查询性能。
  • 查询执行引擎增强:执行引擎的性能显著提升,查询性能提高了 2 倍以上。
  • 新型虚拟机引擎:引入了基于虚拟机的新引擎(未来将替代基于语法树 AST 的引擎),并提供更大的性能提升。(在 v17 中默认未启用)。
  • 架构变更跟踪(Schema Tracking)增强:查询规划器能够快速检测数据库架构的变化,确保查询能及时更新以适应最新架构,这改善了数据的一致性。

复制增强

Vitess v17 对 MySQL 复制做出了重大改进,使得每个与 Vitess 分片(shard)对应的副本集的复制性能更加高效。

  • 支持 noblob binlog_row_image 类型**:对于使用 TEXTBLOBJSON 列的场景,可以显著减少二进制日志的整体大小,降低磁盘 I/O、存储空间以及网络 I/O 和相关的 CPU 开销。与默认的 full 类型不同(包含所有列的完整 BEFORE 和 AFTER 图像),noblob 类型仅在修改了这些列时才将其数据包含在事件中。
  • 支持 MySQL 8.0 的二进制日志事务压缩:新功能使用 Zstandard 压缩每个 GTID 的内容,然后将压缩的事件存储在二进制日志中。这显著降低了磁盘 I/O、存储与网络 I/O的压力,代价是读写日志时多耗费一些 CPU 时间。

性能提升的组合

上述功能可以结合使用以实现更大的效率提升。除了节省硬件和服务成本(如磁盘、网络和 CPU 资源),这些新功能使得保留二进制日志更长时间更加可行,这可以为备份、恢复和灾难恢复相关操作提供支持。


可用性增强

流量限制(Traffic Throttling)改进

  • 事务限制器(Transaction Throttler)现在可以对自动提交模式下的 DML 操作进行限制,而之前仅支持显式 BEGIN 语句的限制。
  • 新增 --tx-throttler-tablet-types 标志,用于控制哪些 Tablet 类型会影响限制器。

VTorc 改进

  • 对 VTorc 修复了许多 bug,并显著加快了针对主节点故障(Dead Primary)恢复的处理时间。

VTAdmin 改进

  • vtadmin-webcreate-react-app 迁移到 Vite,此举使得我们可以更轻松地保持依赖项的更新和安全。

其他改进

更多修复与提升可以在发布说明中找到:Vitess v17.0.0 Release Notes



发布 Vitess 17插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:http://folen.top/2025/09/13/vitess-17-version/