SuperAPI AI 工具集

postgresql

数据与分析

查看项目

更新于 10-15 22:17

技能介绍

用途:面向 PostgreSQL 的模式设计、查询优化、索引、管理与运维实践,适用于需要处理 JSONB、分区、RLS、CTE、窗口函数等场景的开发与运维工作。

主要能力与要点: 数据类型与模式:主键建议 BIGINT GENERATED ALWAYS AS IDENTITY;时间用 TIMESTAMPTZ;金额用 NUMERIC(precision, scale);JSON 用 JSONB;UUID 用 gen_random_uuid();IP 用 INET/CIDR;区间用范围类型。每个外键列需自建索引;非必要时用 NOT NULL;域规则用 CHECK;范围重叠用 EXCLUDE 约束;created_at 默认 now(),updated_at 用触发器维护。

迁移安全:所有模式变更走迁移,迁移一经部署不可修改,禁止生产环境临时 DDL;模式迁移与数据迁移分开;生产仅前向迁移,回滚用新的前向迁移;重命名/删除用 expand-contract;CREATE INDEX 用 CONCURRENTLY 并单独成迁移;大表回填用 FOR UPDATE SKIP LOCKED 分批执行。

索引:B-tree 用于等值、范围、排序与 LIKE 前缀;GIN 用于 JSONB、数组与全文;GiST 用于几何与范围;BRIN 用于有自然排序的大表。可用复合、部分、覆盖与表达式索引;写密集表设 fillfactor 70-90;用 pg_stat_user_indexes 找出未使用索引。

查询优化:优化前先运行 EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT);用 pg_stat_statements 查找慢查询;关注表膨胀;分页优先游标而非 OFFSET;大表行数用 pg_class.reltuples 近似;昂贵聚合用物化视图并 REFRESH ... CONCURRENTLY。

其他:RLS 用 ENABLE/FORCE ROW LEVEL SECURITY 与策略表达式,涉及列需建索引;生产使用连接池(PgBouncer 事务模式),注意命名预处理语句与事务池的绑定问题;pgvector 支持 HNSW 与 IVFFlat 索引及余弦/L2/内积距离算子;分区适用于超约 1 亿行的表或 TTL 清理。

适用场景与限制:适合数据库设计评审、迁移规划、性能排查与运维参考。资料未提供具体版本的完整兼容范围、部署平台或性能数字;实际效果需结合业务数据与实测验证。