Skip to content
Back to skills

Postgresql

ASecurity

Глубокая работа с PostgreSQL — проектирование схемы и типов, индексы (btree/GIN/GiST/BRIN/partial/covering), чтение планов EXPLAIN ANALYZE и оптимизация запросов, транзакции/изоляция/блокировки, JSONB и полнотекстовый поиск, партиционирование, репликация, пулы соединений и миграции без простоя. Use при работе с Postgres, проектировании схемы или оптимизации SQL.

  • 2 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 11, 2026
databasessql

Works with

  • mcp

Security analysis

A100/100

Scanned September 11, 2026

npx -y skills add Vitammiin/agent-vorcl-flow --skill postgresql --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Postgresql?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Postgresql
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vitammiin-postgresql-agent-vorcl-flow/badge)](https://www.skillsdirectory.com/skills/vitammiin-postgresql-agent-vorcl-flow)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: postgresql
description: Глубокая работа с PostgreSQL — проектирование схемы и типов, индексы (btree/GIN/GiST/BRIN/partial/covering), чтение планов EXPLAIN ANALYZE и оптимизация запросов, транзакции/изоляция/блокировки, JSONB и полнотекстовый поиск, партиционирование, репликация, пулы соединений и миграции без простоя. Use при работе с Postgres, проектировании схемы или оптимизации SQL.
version: 1.1.0
---

# Навык: PostgreSQL

Реляционная БД по умолчанию для сильносвязанных данных с транзакциями и сложными запросами.

## Схема и типы
- Правильные типы: `text` вместо `varchar(n)` без нужды, `timestamptz` (не `timestamp`), `numeric` для денег, `uuid`, `boolean`, `enum`/`domain`.
- Ограничения на уровне БД: `NOT NULL`, `CHECK`, `UNIQUE`, внешние ключи с `ON DELETE`. Данные защищает схема, а не приложение.
- Генерируемые столбцы, `DEFAULT`, идентификаторы `GENERATED ALWAYS AS IDENTITY`.

## Индексы
- **btree** — равенство/диапазоны/сортировка (дефолт). **GIN** — `jsonb`, массивы, полнотекст. **GiST** — гео/диапазоны. **BRIN** — огромные append-only по времени.
- **Составной** индекс: порядок столбцов = порядок фильтрации (leftmost prefix). **Partial** (`WHERE`) — под горячий срез. **Covering** (`INCLUDE`) — index-only scan.
- Индексируй столбцы из `WHERE`/`JOIN`/`ORDER BY`; не плоди лишние (замедляют запись). `CREATE INDEX CONCURRENTLY` — без блокировки таблицы.

## Оптимизация запросов
- `EXPLAIN (ANALYZE, BUFFERS)` — читай снизу вверх: **Seq Scan** на большой таблице, **Nested Loop** с большим rows, расхождение estimated/actual → проблема.
- Убирай **N+1** (JOIN/`= ANY($1)` вместо цикла), избегай `SELECT *`, функций по индексируемому столбцу (`WHERE lower(email)=` → индекс по выражению).
- `ANALYZE`/автовакуум для актуальной статистики; пагинация по keyset (`WHERE id > $last`) вместо больших `OFFSET`.

## Транзакции, изоляция, блокировки
- Уровни: `READ COMMITTED` (дефолт) → `REPEATABLE READ` → `SERIALIZABLE`. Выше уровень — больше сериализационных ошибок (готовь retry).
- `SELECT ... FOR UPDATE`/`FOR NO KEY UPDATE` — явные блокировки строк; следи за порядком захвата (deadlock).
- Короткие транзакции; никакого внешнего I/O внутри транзакции.

## JSONB и поиск
- `jsonb` для полуструктурированных данных; операторы `->`, `->>`, `@>`, индекс `GIN (col jsonb_path_ops)`.
- Полнотекст: `tsvector`/`tsquery` + GIN; для fuzzy — `pg_trgm`.

## Масштаб
- **Партиционирование** (declarative, по диапазону/списку/хэшу) для больших таблиц — прунинг партиций ускоряет запросы, упрощает архивацию.
- **Репликация**: стриминг-реплики для чтения; разноси read/write. Расширения: `PostGIS`, `pg_stat_statements` (поиск медленных запросов), `TimescaleDB` для time-series.

## Пулы и миграции
- Пул соединений обязателен (**PgBouncer**/пул драйвера); Postgres плохо переносит тысячи коннектов.
- Миграции без простоя по схеме **expand → migrate → contract**: сначала добавь nullable-столбец/индекс `CONCURRENTLY`, задеплой код, потом бэкфилл, затем `NOT NULL`/удаление старого. Не переименовывай столбцы в один шаг.

## Антипаттерны
- Логика/индексы «в приложении» вместо БД; отсутствие FK; `OFFSET` для глубокой пагинации; `text`-хранение денег/времени; один гигантский индекс на всё; долгие транзакции.

## Через MCP
MCP-сервер `postgres` (read-only) — для инспекции: смотри схему, гоняй `EXPLAIN ANALYZE`, проверяй индексы и данные без правок. Изменения схемы/данных — только миграциями с подтверждением человека.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.