Тип jsonb в PostgreSQL позволяет хранить полуструктурированные данные, индексировать их и выполнять сложные запросы — без отдельного документного хранилища. Разберёмся, как работают операторы, какие…
Когда таблица перерастает 100 миллионов строк, привычные операции начинают деградировать. VACUUM работает часами, индексы раздуваются до десятков гигабайт, а удаление старых данных превращается в…
Логическая репликация в PostgreSQL — механизм выборочного копирования данных между серверами на уровне отдельных таблиц. В отличие от физической репликации, которая передаёт WAL-сегменты целиком,…
PostgreSQL не удаляет строки физически. При UPDATE или DELETE старая версия строки (dead tuple) остаётся на диске — она нужна для MVCC, чтобы параллельные транзакции видели консистентные данные. Но…
Деплой Go-сервиса — это один бинарник. Никаких зависимостей, никакого рантайма. Но что делать со статикой, шаблонами и SQL-миграциями? Раньше приходилось таскать файлы рядом с бинарником или…
Если вы работали с Go и горутинами, то наверняка видели панику fatal error: concurrent map writes. Встроенный map в Go не потокобезопасен — любой конкурентный доступ без синхронизации приводит к…
Логи медленных запросов — это хорошо, но они показывают только то, что уже взорвалось. А что если нужно найти запросы, которые по отдельности быстрые, но вызываются 100 000 раз в минуту и суммарно…
Вы создали таблицу, написали запрос, он работает — но медленно. Первое, что приходит в голову — «надо добавить индекс». Но какой именно? PostgreSQL предлагает несколько типов индексов, и выбор…
Когда приложение тормозит и пользователи жалуются на таймауты — первое место для DBA это pg_stat_activity. Представление показывает все соединения к PostgreSQL в реальном времени: кто подключён, что…
Запрос тормозит, но вы не знаете почему. Добавить индекс наугад? Переписать JOIN? Всё это гадание, пока вы не посмотрели план выполнения. EXPLAIN ANALYZE — рентген для SQL: показывает, что…