SuperAPI AI 工具集

postgresql

数据与分析

查看项目

更新于 10-15 21:11

技能介绍

用途:在设计 PostgreSQL schema、选择数据类型与约束、规划索引/分区/RLS 策略、审查表的可扩展性与可维护性时使用。不适用于非 PostgreSQL 数据库、仅做查询调优而无 schema 变更、或需要与数据库无关的建模指南的场景。

主要能力与规则:先明确实体、访问模式和规模目标(行数、QPS、保留期);用数据类型与约束强制不变量;仅对真实查询路径建索引并用 EXPLAIN 验证;按需规划分区或 RLS;评估迁移影响并安全变更。引用表应设主键,优先 BIGINT GENERATED ALWAYS AS IDENTITY,仅在需要全局唯一/不可读时用 UUID。先规范化到 3NF,只有在实测高收益读取场景才反规范化。语义需要处加 NOT NULL 并用 DEFAULT。外键列 PostgreSQL 不会自动建索引,需手动添加。事件时间用 TIMESTAMPTZ,金额用 NUMERIC,字符串用 TEXT,整数用 BIGINT,浮点用 DOUBLE PRECISION。

常见陷阱:未加引号的标识符会被转为小写,建议 snake_case;UNIQUE 允许多个 NULL,PG15+ 可用 NULLS NOT DISTINCT 限制;长度/精度溢出会直接报错而非截断;序列/identity 存在空洞属正常;默认无聚簇主键,CLUSTER 是一次性重组;MVCC 下更新删除留下死元组,由 vacuum 处理。

数据类型要点:花括号内为原文所述类型与做法,如 TEXT 可用 CHECK (LENGTH(col) <= n) 代替 VARCHAR(n);数组用 GIN 索引支持 @>、<@、&&;范围类型用 GiST,默认 [) 边界;网络类型 INET/CIDR/MACADDR;全文检索用 TSVECTOR/TSQUERY 且必须指定语言;可用 CREATE DOMAIN、CREATE TYPE 自定义类型;JSONB 优先于 JSON 并用 GIN 索引;pgvector 的 vector 类型用于向量相似搜索。

安全与限制:生产环境禁止在无备份和回滚计划下执行破坏性 DDL;schema 变更应通过迁移并在预发验证。资料未提供具体版本要求、安装命令或收费信息。