SuperAPI AI 工具集

query-design

编程与开发

查看项目

更新于 10-15 23:33

技能介绍

该技能用于在改存储方法或任何带查询的循环前,设计或审查 SQL 读取、写入、扫描、回填和慢路径,核心是按往返次数(round trips)而非仅按 SQL 写法来规划。

主要能力与用法:

  1. 先记录问题、调用方、调用速率、数据权威源、行预算、语句数、时延与并发上限,再改存储。不把凭据和行内容写入测量与报告,运营、导出、监控读尽量走副本并记录一致性取舍。
  2. 共享规则:禁止在行循环内查询,先分页父级再用一次批处理 IN 取子级并在内存合并;两个查询用同样的授权过滤;子级扇出与结果字节都要设上限,单父级超预算时单独分页子级。分页用 keyset,禁用 OFFSET,按以唯一列结尾的索引元组排序,游标条件匹配各列排序方向,取 limit + 1 探测下一页,返回时排除探测行。
  3. 为每个查询命名索引并用 EXPLAIN 证明,记录所选键、访问类型、预估行数与排序成本,修复增长表上的全表扫描或 filesort;只选调用方用到的列,计数与元数据扫描排除大字段、JSON 与文本。
  4. 保持事务短小,只包住需要原子性的写入或一致性读,禁止把整次扫描放进事务,外部 I/O 放在事务外。声明并发上限,生产扫描先用单连接串行分页,测量后再加并行。长任务向 stderr 输出阶段、已完成页数、计数与耗时,用计数输出,设停顿超时并返回带阶段和已完成数的类型化失败。
  5. 使用存储边界:port 声明操作,adapter 实现,SQL、Drizzle、连接池与驱动调用留在 adapter 内,调用方依赖 port。结果上限只约束返回行,EXPLAIN 证据还要证明扫描工作量预算。多租户 MySQL 索引以租户键打头并在分页中保持该过滤。
  6. PlanetScale Vitess 限制:事务超时 20 s(应用配置视为固定),自动提交查询超时 900 s,单查询返回、更新或删除行数 100k,单查询结果大小 64 MiB,事务池有上限且随实例类型变化;被杀事务映射为类型化的 adapter 失败,1105 加 context deadline exceeded 才做超时处理。Vitess 经 vttablet 池化连接,SHOW PROCESSLIST 显示池连接而非应用会话。
  7. 共享 MySQL 路径在 adapter 内用 mysql2 文本协议 .query(),连接在 Worker 请求内创建并复用,由请求生命周期释放,Hyperdrive 负责跨请求复用底层连接,避免第二个池或模块级全局连接。
  8. 用比文字更强的检查:在 adapter 边界用计数执行器统计语句数,生成页边界上下与空页用例,验证语句数不超过计划值;记录语句模板清单(归一化 IN 与多行 VALUES 的占位符长度,不记参数值),实现计划栅栏拒绝未登记模板,并做覆盖检查。故意植入缺失清单项与 N+1 观察失败,再恢复并记录通过结果。
  9. 完成后报告问题、调用方、速率、行预算、并发上限,每个查询的索引与 EXPLAIN 证据,往返数与预测及实测耗时,存储 port、statement-count 结果、植入的 N+1 失败,清单覆盖与栅栏结果,进度行为、类型化超时处理与未测试的提供方路径。rat-stack 中最后运行 pnpm turbo run check test build。

限制:资料未提供该技能的安装方式、收费与平台支持信息,暂未提供;Vitess 限制不适用于 PlanetScale Postgres。