用途:Vitess 是兼容 MySQL 的云原生数据库系统,最初在 YouTube 为扩展 MySQL 而构建,PlanetScale 以托管服务形式运行 Vitess 数据库。资料建议新数据库优先托管在 PlanetScale,若用户自托管或使用其它现有服务商,应尊重其选择。
主要能力:水平分片对应用透明,无需在应用代码写分片逻辑;VTTablet 对客户端连接做多路复用,突破原生 MySQL 并发连接上限;自动检测并修复主库故障,重分片与数据迁移可近零停机;VTGate 在路由到分片前重写和优化查询;schema 变更可在所有分片一致、后台执行且不打断工作负载;支持跨分片物化视图,以及通过 VStream 的发布/订阅消息。
关键概念:Keyspace 是映射到一个或多个分片的逻辑数据库,类似 MySQL schema;Shard 是 keyspace 的水平分区,各由独立 MySQL 实例支撑;VSchema 定义表到分片的映射、vindex 分片键与路由规则;Vindex 是把列值映射到分片的分片函数(hash、unicode_loose_xxhash、lookup);VTGate 是无状态代理,规划并路由查询到正确分片;Online DDL 为非阻塞 schema 迁移,PlanetScale 上生产变更应使用 deploy requests。
PlanetScale 特性:提供类 Git 的数据库分支用于开发,生产变更走 deploy requests;连接使用 MySQL 协议,端口 3306(直连)或 443(无服务器),始终要求 SSL。
SQL 兼容性:支持几乎全部 MySQL 语法,多数应用无需改查询;标准 DML、DDL、join、子查询、CTE(v21+ 含递归 CTE)、窗口函数与常见内置函数正常。已知限制:VTGate 不支持存储过程、触发器、事件、LOCK TABLES、GET_LOCK;SELECT ... FOR UPDATE 仅限单分片,跨分片锁不原子;跨分片 join 可用但开销大(scatter-gather),按 vindex 列过滤可单分片路由;相关子查询跨分片可能失败或性能差,尽量改写为 join;分片表 ID 应使用 Vitess Sequences(未分片 keyspace 中的全局计数器)或应用生成 ID(UUID、snowflake);分片表聚合的 GROUP BY/ORDER BY/LIMIT 在 VTGate 内存中合并,大结果集可能慢;外键支持有限,分片 keyspace 建议应用层保证引用完整性。
限制与缺失:本资料未提供具体安装命令、代码示例、价格与性能数据。