PostgreSQL использует циклическое пространство обычных transaction ID. Старые версии строк нужно замораживать, иначе сравнение видимости станет небезопасным; anti-wraparound VACUUM предотвращает это.
Индекс по выражению хранит вычисленный ключ, например lower(email). Он ускоряет подходящие запросы, но требует вычисления и поддержки индексных записей при изменении данных.
Опишите реальные задачи с каждой системой, глубину участия и конкретные решения: запросы и транзакции, индексы, миграции, кеширование или очереди. Не ограничивайтесь списком названий.
PostgreSQL обычно выбирают для транзакционных реляционных данных, MongoDB — для документной модели, ClickHouse — для аналитического чтения больших объёмов. Выбор определяется запросами и гарантиями.
Функция вызывается внутри SQL-выражения и возвращает значение или набор; процедура вызывается через CALL. Процедура может управлять транзакциями, но только при соблюдении ограничений вызова.
WAL хранит журнал изменений, необходимый для восстановления PostgreSQL после сбоя. Журнал записывается раньше соответствующих страниц данных и используется также для репликации и PITR.
Архивирование сохраняет WAL-сегменты, а streaming replication передаёт WAL реплике. Отключённая реплика может отстать; удержание WAL и сбой архивации способны заполнить диск primary.
Обычный VACUUM очищает ненужные версии строк для переиспользования места; VACUUM FULL переписывает таблицу компактно с сильной блокировкой. Autovacuum автоматически запускает обслуживание по активности таблиц.
Однозначного победителя нет: Hash рассчитан на равенство, но B-tree часто столь же практичен и поддерживает больше операций. Быстрее определяется измерением на конкретных данных и запросе.
Наиболее прямой следующий шаг — проверить фильтры, сортировку, селективность и подобрать индекс по плану. Сам по себе Seq Scan не доказывает, что нужен любой индекс.
Расскажите о конкретном медленном запросе, его плане и изменении индекса: состав, порядок колонок, частичный предикат или покрытие. Снижение p95/p99 подтверждают измерениями до и после.
Начните с требований витрины и выделения бизнес-сущностей: товар, вариант, продавец, предложение, категория. Затем объясните таблицы, ключи и связи на реальном проекте, не придумывая их количество.