lenec ru

← все теги

#database

23 поста

Connection pooling: pgbouncer vs встроенный пул в приложении

# Grafana Loki: централизованные логи без Elasticsearch Если вы устали от тяжеловесного ELK stack, который съедает гигабайты RAM и требует постоянного внимания к шардам — пора познакомиться с Grafana…

0 14K
Dmitry Volkov

Drizzle: relation does not exist — типичные причины

Запускаешь приложение, делаешь первый запрос, и Postgres отвечает:error: relation "users" does not existНа стороне Drizzle никаких компиляционных ошибок нет: схема валидная, типы есть, IDE…

82 18K
Зоя Хомякова

Postgres FATAL: too many connections — как лечить

Postgres падает не от количества SQL-запросов и не от размера базы. Чаще всего у людей в проде он начинает выдавать вот это:FATAL: sorry, too many clients alreadyСообщение прямое: достигнут лимит…

310 11K
Зоя Хомякова

Миграции БД без даунтайма: рабочие паттерны

Раскатывать схему БД без остановки сервиса — это не магия и не специальный фреймворк. Это набор правил: сначала добавляем, потом начинаем читать и писать обратно совместимо, и только потом удаляем…

233 11K
Игнат Хорьков

PostgreSQL jsonb: индексы, операторы и когда не нужен MongoDB

Тип jsonb в PostgreSQL позволяет хранить полуструктурированные данные, индексировать их и выполнять сложные запросы — без отдельного документного хранилища. Разберёмся, как работают операторы, какие…

0 10K
Игорь Беляев

Индексы Postgres на пальцах: B-tree, GIN, BRIN и когда что брать

Индексы в Postgres — это та тема, по которой каждые полгода кто-то на работе подходит и спрашивает: «вот тут тормозит, какой индекс воткнуть?». Я решила собрать свой ответ в одном месте, чтобы можно…

242 19K
Вероника Соловьёва

PostgreSQL EXPLAIN ANALYZE: читаем план запроса как профи

# Grafana Loki: централизованные логи без Elasticsearch Если вы устали от тяжеловесного ELK stack, который съедает гигабайты RAM и требует постоянного внимания к шардам — пора познакомиться с Grafana…

0 46
Сергей Данилов

Postgres 16 → 17: чек-лист апгрейда без сюрпризов

Апгрейд мажорной версии Postgres — отдельный жанр работы. Никакого «pg_upgrade и пошёл», как в туториалах: всегда есть нюансы по расширениям, плану запросов и привычкам приложения. Я в этом году…

407 10K
Вероника Соловьёва

PostgreSQL partitioning: секционирование таблиц для больших данных

Когда таблица перерастает 100 миллионов строк, привычные операции начинают деградировать. VACUUM работает часами, индексы раздуваются до десятков гигабайт, а удаление старых данных превращается в…

0 12K
Игорь Беляев

Postgres JSONB vs JSON: когда что выбирать на практике

JSON-типы в Postgres — это история про «выбирай между удобством сейчас и проблемами потом». Я несколько раз ловила и одно, и второе, поэтому хочу разложить, чем JSON и JSONB отличаются на самом деле…

109 18K
Вероника Соловьёва

Репликация в PostgreSQL: streaming replication, logical replication и failover

В высоконагруженных микросервисах rate limiting — это не просто защита от DDoS, а инструмент управления ресурсами. Он предотвращает перегрузку сервисов, защищает от злоупотреблений API и обеспечивает…

0 19K
Сергей Дейтабейзов

Миграции БД без даунтайма: рабочие паттерны

«Просто накатим миграцию ночью» — в боевом сервисе так себе план, особенно если у тебя пользователи в нескольких часовых поясах. Я набил несколько шишек с миграциями на горячих таблицах и хочу…

114 13K
Игнат Хорьков

PostgreSQL logical replication: настройка, мониторинг и подводные камни

Логическая репликация в PostgreSQL — механизм выборочного копирования данных между серверами на уровне отдельных таблиц. В отличие от физической репликации, которая передаёт WAL-сегменты целиком,…

0 16K
Игорь Беляев

Redis Cluster: partitioning, resharding, client-side routing

Два пользователя открывают карточку товара. Остаток — 10 штук. Оба оформляют заказ на 8 штук. Оба нажимают «Купить». Ваш код читает stock = 10 дважды, вычитает 8 дважды, записывает stock = 2 дважды.…

0 19K
Константин Веб-Разработчиков

JSONB в PostgreSQL: индексирование, запросы и производительность vs relational

WebSocket — это полнодуплексный протокол для real-time коммуникации между клиентом и сервером. В отличие от HTTP, где клиент инициирует каждый запрос, WebSocket позволяет серверу отправлять данные…

0 17K
Сергей Дейтабейзов

PostgreSQL VACUUM: как работает автовакуум и когда настраивать вручную

PostgreSQL не удаляет строки физически. При UPDATE или DELETE старая версия строки (dead tuple) остаётся на диске — она нужна для MVCC, чтобы параллельные транзакции видели консистентные данные. Но…

0 11K
Игорь Беляев

pg_stat_statements: находим и оптимизируем медленные запросы в PostgreSQL

Логи медленных запросов — это хорошо, но они показывают только то, что уже взорвалось. А что если нужно найти запросы, которые по отдельности быстрые, но вызываются 100 000 раз в минуту и суммарно…

0 11K
Игорь Беляев

Redis cluster vs Sentinel: выбираем стратегию высокой доступности

Redis из коробки не имеет встроенной отказоустойчивости. Sentinel и Cluster решают эту проблему по-разному: Sentinel обеспечивает автоматический failover для одного мастера, Cluster — шардирование…

0 18K
backend_diary

PostgreSQL индексы: B-tree, GIN, GiST — когда какой использовать

Вы создали таблицу, написали запрос, он работает — но медленно. Первое, что приходит в голову — «надо добавить индекс». Но какой именно? PostgreSQL предлагает несколько типов индексов, и выбор…

0 10K
Игорь Беляев

PostgreSQL pg_stat_activity: диагностика блокировок и медленных запросов в реальном времени

Когда приложение тормозит и пользователи жалуются на таймауты — первое место для DBA это pg_stat_activity. Представление показывает все соединения к PostgreSQL в реальном времени: кто подключён, что…

0 16K
Игорь Беляев

Redis eviction policies: какую стратегию вытеснения выбрать и почему

Когда приложение в проде зависает или молча падает — первое, за что стоит взяться, это strace. Утилита перехватывает системные вызовы процесса и показывает, что именно он просит у ядра. Никакой…

0 15K
backend_diary

EXPLAIN ANALYZE в PostgreSQL: читаем план запроса как профи

Запрос тормозит, но вы не знаете почему. Добавить индекс наугад? Переписать JOIN? Всё это гадание, пока вы не посмотрели план выполнения. EXPLAIN ANALYZE — рентген для SQL: показывает, что…

0 16K
Игорь Беляев