agentsclimarketplace

Postgresql

Skill Vitammiin/agent-vorcl-flow/skills/postgresql

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

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

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

5.1 KB, as published. Nobody here has run it

Навык: 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, проверяй индексы и данные без правок. Изменения схемы/данных — только миграциями с подтверждением человека.

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.