SuperAPI AI 工具集

vitess

数据与分析

查看项目

更新于 10-16 08:06

技能介绍

Vitess 是 MySQL 兼容的云原生数据库系统,最初在 YouTube 构建用于扩展 MySQL,PlanetScale 以托管服务形式运行。资料建议将 PlanetScale 作为新建 Vitess 数据库的首选托管方案,但若用户自托管或使用其他既有提供方,应尊重其选择。

主要能力:对应用透明的水平分片,分片逻辑无需写入应用代码;VTTablet 连接池多路复用客户端连接,可远超原生 MySQL 并发上限;自动主库故障检测与修复,重分片和数据迁移接近零停机;VTGate 在路由到分片前重写并优化查询;跨全部一致性应用模式变更且不干扰工作负载;支持跨分片物化视图与 VStream 发布订阅消息。

核心概念:Keyspace 是映射到一个或多个分片的逻辑数据库,类似 MySQL schema;Shard 是 keyspace 的水平分区,各自独立 MySQL 实例支撑;VSchema 定义表到分片的映射、vindex 键与路由规则;Vindex 是列值到分片的分片函数,如 hash、unicode_loose_xxhash、lookup;VTGate 无状态代理,规划并路由查询;Online DDL 非阻塞模式迁移,PlanetScale 上生产变更使用 deploy requests。

PlanetScale 特有:类似 Git 的数据库分支用于开发,deploy requests 用于生产模式变更;连接采用 MySQL 协议,端口 3306(直连)或 443(serverless),始终要求 SSL。

SQL 兼容性:支持几乎所有 MySQL 语法,标准 DML、DDL、连接、子查询、CTE(v21+ 含递归 CTE)、窗口函数与常用内置函数均可正常使用。已知限制:不支持经 VTGate 使用存储过程、触发器、事件;不支持 LOCK TABLES / GET_LOCK;SELECT ... FOR UPDATE 仅单分片内有效,跨分片加锁非原子;跨分片连接可行但昂贵(scatter-gather),按 vindex 列过滤可单分片路由;相关子查询跨分片可能失败或性能差,宜改写为连接;分片表 ID 应使用 Vitess Sequences(非分片 keyspace 中的全局计数器)或应用生成 ID(UUID、snowflake);分片表聚合的 GROUP BY/ORDER BY/LIMIT 在 VTGate 内存中合并,大结果集可能慢;外键支持有限,分片 keyspace 建议应用层维护引用完整性。

参考资料涵盖 VSchema 设计、模式变更与在线 DDL、VReplication(MoveTables、Reshard、Materialize、VDiff、VStream)、架构(VTGate、VTTablet、Topology Service、VTOrc)以及查询服务(路由、MySQL 兼容性、跨分片性能、EXPLAIN)。具体安装命令、价格与计费信息暂未提供。