SuperAPI AI 工具集

ysql

数据与分析

查看项目

更新于 10-16 01:50

技能介绍

用途:面向 YugabyteDB 的 YSQL API(PostgreSQL 兼容,端口 5433)编写或审查 SQL、Schema 与应用代码。YugabyteDB 是分布式、ACID 兼容、高可用、可水平扩展的数据库,支持表与索引的哈希/范围分片,设计需在读取效率、写入扩展性与运维成本间权衡。连接示例:postgresql://yugabyte:yugabyte@localhost:5433/yugabyte。单一连接端点不保证负载均衡,应使用驱动原生拓扑/负载均衡能力,必要时配合基础设施层负载均衡。

主要能力(技能内含参考资料):references/smart-drivers.md 提供 9 种智能驱动连接示例(Python psycopg3/psycopg2、Java JDBC/R2DBC、Go、Node.js、C#、Rust、Ruby);references/retry-patterns.md 提供 Python 与 Java 事务重试代码;references/bnl-joins.md 说明批量嵌套循环连接的设计影响、GUC 默认值与诊断;references/query-optimization.md 给出 timestamp 与 now() 阻断索引下推的示例;references/voyager.md 涉及 YugabyteDB Voyager 迁移评估与模式转换审查。

Schema 设计要点:优先稳定且分布均匀的自然主键;避免范围分片访问路径使用单调递增首列(序列、时间戳、UUIDv7、递增文本 ID);可用 HASH+ASC 组合兼顾写入分布与有序读取。仅对高吞吐场景使用 SPLIT INTO 预分片,缺省采用初始 tablet 数;小型低频表可启用 colocation(数据库低于 50GB 为典型用例,非容量保证),大表或写重表应 WITH (colocation = false),已有表移出需重建并迁移。索引应面向真实查询:用 pg_stat_statements 与 EXPLAIN (ANALYZE, DIST) 验证,合适时使用 INCLUDE 覆盖索引、部分索引、外键索引;索引列顺序等值列在前、范围列在后。地理分布可用 tablespaces 与行级 geo-partitioning(yb_server_region(),分区索引需建在对应区域表空间)。数据类型上 JSONB 仅用于真正动态模式;行大小建议小于 10MB(32MB 为上限而非延迟目标),列建议不超过 2MB。分区仅在地理分布或时间生命周期场景使用,且保持分区数少。

使用方式与限制:按驱动选择负载均衡与拓扑参数,如 psycopg2/pgx/rust-postgres/ruby-pg 用 load_balance=true 与 topology_keys,psycopg3 用 load_balance_hosts=true,JDBC 用 load-balance=true,R2DBC 用 loadBalanceHosts=true,node-postgres 用 loadBalance: true,Npgsql 用 Load Balance Hosts=true;psycopg3 拓扑键不支持优先级后缀,无可用 tserver 时连接失败。Python 新代码应使用 psycopg3,注意 psycopg-yugabytedb 与上游包隔离。其他事实(价格、平台支持、性能数据等)资料暂未提供。