本文へ移動
cccskills
無料GitHub で公開

postgres-patterns

PostgreSQL 数据库模式,用于查询优化、架构设计、索引和安全性。基于 Supabase 最佳实践。

インストール方法を見る

含まれるファイル(1)

  • SKILL.md4.0 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

PostgreSQL 最佳实践模式 (PostgreSQL Patterns)

PostgreSQL 最佳实践快速参考。如需详细指导,请使用 database-reviewer 智能体 (Agent)。

何时激活

  • 编写 SQL 查询或迁移脚本
  • 设计数据库架构 (Schema)
  • 排查慢查询问题
  • 实现行级安全性 (Row Level Security, RLS)
  • 设置连接池 (Connection Pooling)

快速参考

索引速查表 (Index Cheat Sheet)

查询模式索引类型示例
WHERE col = valueB-tree (默认)CREATE INDEX idx ON t (col)
WHERE col > valueB-treeCREATE INDEX idx ON t (col)
WHERE a = x AND b > y复合索引 (Composite)CREATE INDEX idx ON t (a, b)
WHERE jsonb @> '{}'GINCREATE INDEX idx ON t USING gin (col)
WHERE tsv @@ queryGINCREATE INDEX idx ON t USING gin (col)
时间序列范围BRINCREATE INDEX idx ON t USING brin (col)

数据类型快速参考

用例正确类型应避免
IDbigintint, 随机 UUID
字符串textvarchar(255)
时间戳timestamptztimestamp
金额numeric(10,2)float
标记位 (Flags)booleanvarchar, int

常用模式

复合索引顺序:

-- 等值列(Equality columns)在前,范围列(Range columns)在后
CREATE INDEX idx ON orders (status, created_at);
-- 适用于:WHERE status = 'pending' AND created_at > '2024-01-01'

覆盖索引 (Covering Index):

CREATE INDEX idx ON users (email) INCLUDE (name, created_at);
-- 避免在执行 SELECT email, name, created_at 时进行回表查询 (Table lookup)

部分索引 (Partial Index):

CREATE INDEX idx ON users (email) WHERE deleted_at IS NULL;
-- 索引更小,仅包含活跃用户

RLS 策略(优化版):

CREATE POLICY policy ON orders
  USING ((SELECT auth.uid()) = user_id);  -- 包装在 SELECT 中!

UPSERT (更新或插入):

INSERT INTO settings (user_id, key, value)
VALUES (123, 'theme', 'dark')
ON CONFLICT (user_id, key)
DO UPDATE SET value = EXCLUDED.value;

游标分页 (Cursor Pagination):

SELECT * FROM products WHERE id > $last_id ORDER BY id LIMIT 20;
-- O(1) 复杂度,优于 O(n) 的 OFFSET

队列处理 (Queue Processing):

UPDATE jobs SET status = 'processing'
WHERE id = (
  SELECT id FROM jobs WHERE status = 'pending'
  ORDER BY created_at LIMIT 1
  FOR UPDATE SKIP LOCKED
) RETURNING *;

反模式检测 (Anti-Pattern Detection)

-- 查找未建立索引的外键
SELECT conrelid::regclass, a.attname
FROM pg_constraint c
JOIN pg_attribute a ON a.attrelid = c.conrelid AND a.attnum = ANY(c.conkey)
WHERE c.contype = 'f'
  AND NOT EXISTS (
    SELECT 1 FROM pg_index i
    WHERE i.indrelid = c.conrelid AND a.attnum = ANY(i.indkey)
  );

-- 查找慢查询
SELECT query, mean_exec_time, calls
FROM pg_stat_statements
WHERE mean_exec_time > 100
ORDER BY mean_exec_time DESC;

-- 检查表膨胀 (Table Bloat)
SELECT relname, n_dead_tup, last_vacuum
FROM pg_stat_user_tables
WHERE n_dead_tup > 1000
ORDER BY n_dead_tup DESC;

配置模板

-- 连接限制 (根据 RAM 调整)
ALTER SYSTEM SET max_connections = 100;
ALTER SYSTEM SET work_mem = '8MB';

-- 超时设置
ALTER SYSTEM SET idle_in_transaction_session_timeout = '30s';
ALTER SYSTEM SET statement_timeout = '30s';

-- 监控
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;

-- 安全默认值
REVOKE ALL ON SCHEMA public FROM public;

SELECT pg_reload_conf();

相关资源

  • 智能体 (Agent):database-reviewer - 完整数据库审查工作流
  • 技能 (Skill):clickhouse-io - ClickHouse 分析模式
  • 技能 (Skill):backend-patterns - API 和后端模式

基于 Supabase 智能体技能 (Supabase Agent Skills) (致谢: Supabase 团队) (MIT 许可证)

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

生产级 API 的 REST API 设计模式,包括资源命名、状态码、分页、过滤、错误响应、版本控制和速率限制。

日本語の概要は準備中です。原文の説明を表示しています。

xu-xiang/everything-claude-code-zh1,9822026年3月5日 更新

REST API设计模式,包括资源命名、状态码、分页、过滤、错误响应、版本控制和生产API的速率限制。

日本語の概要は準備中です。原文の説明を表示しています。

xu-xiang/everything-claude-code-zh1,9822026年3月5日 更新

撰写文章、指南、博客、教程、时事通讯等长篇内容,并根据提供的示例或品牌指南呈现独特的语言风格。当用户需要篇幅超过一段的精炼文字,且重视风格一致性、结构和可信度时,请使用此技能。

日本語の概要は準備中です。原文の説明を表示しています。

xu-xiang/everything-claude-code-zh1,9822026年3月5日 更新

编写文章、指南、博客帖子、教程、新闻通讯(newsletter)以及其他长篇内容。这些内容具有从提供的示例或品牌指南中提取出的独特语气。当用户需要比段落更长的精美文案,且对语气一致性、结构和可信度有要求时,请使用此技能(Skill)。

日本語の概要は準備中です。原文の説明を表示しています。

xu-xiang/everything-claude-code-zh1,9822026年3月5日 更新

编写文章、指南、博客、教程、时事通讯(Newsletter)等长内容,支持从示例或品牌指南中提取独特的语感语调。适用于需要撰写超过一个段落的精炼文本,尤其是对语气一致性、结构和可信度有较高要求时。

日本語の概要は準備中です。原文の説明を表示しています。

xu-xiang/everything-claude-code-zh1,9822026年3月5日 更新

根据提供的示例或品牌指导,以独特的语气撰写文章、指南、博客帖子、教程、新闻简报等长篇内容。当用户需要超过一段的精致书面内容时使用,尤其是当语气一致性、结构和可信度至关重要时。

日本語の概要は準備中です。原文の説明を表示しています。

xu-xiang/everything-claude-code-zh1,9822026年3月5日 更新

xu-xiang のスキルをすべて見る

このスキルの問題を報告する