Блог инженера

History is written by its contributors

PostgreSQL и генерация случайных данных

2025-07-12 время чтения 5 мин Postgresql Database Data-Generation Ilya Brin

Привет, разработчик! 🎲

Тебе нужно сгенерировать промокоды для акции? Создать миллион тестовых пользователей? Или просто замаскировать продакшн-данные для разработки? PostgreSQL умеет гораздо больше, чем просто SELECT random().

Разберём, как превратить PostgreSQL в генератор случайных данных для реальных задач.

Читать далее

Protobuf или FlatBuffers: что выбрать?

2025-05-24 время чтения 7 мин Postgresql Ilya Brin

Привет, performance-инженер! ⚡

JSON API тормозит под нагрузкой? MessagePack уже не спасает? Пора переходить на серьёзную артиллерию - бинарные протоколы сериализации.

Пока другие спорят о красоте JSON, мы разберемся, когда Protobuf идеален для микросервисов, а FlatBuffers - для игр и real-time систем.
Под капотом только реальные кейсы от Google и Facebook. Лет го!

Читать далее

Как избежать проблем с блокировками в Postgres

2025-04-25 время чтения 3 мин Database Postgresql Performance Optimization Ilya Brin

Блокировки (locks) в PostgreSQL - это механизм, который обеспечивает согласованность данных при параллельных операциях. Однако неправильное управление ими может привести к дедлокам (deadlocks), долгим транзакциям и простою приложений.

В этой статье разберём:

  • Какие бывают блокировки в Postgres
  • Как обнаруживать конфликты
  • Практические способы избежать проблем

Кратко и по существу! 🚀

Читать далее

PostgreSQL VACUM: что это и зачем нужно

2025-04-21 время чтения 4 мин Postgresql Ilya Brin

Что такое VACUUM в PostgreSQL?

VACUUM — это уборка в мире PostgreSQL. Разберёмся, когда пора действовать и почему спешка только навредит.

Почему нужен VACUUM?

PostgreSQL использует MVCC (Multiversion Concurrency Control) — механизм, который позволяет читать данные, даже если их кто-то изменяет. Побочный эффект: старые версии строк не удаляются мгновенно, а остаются в таблице как “мёртвые” (dead tuples).

Когда вы удаляете или обновляете строки в таблице, PostgreSQL не сразу освобождает место. Вместо этого он помечает эти строки как “мертвые” и продолжает использовать старые версии данных. Это позволяет откатить транзакции, но со временем “мертвые” строки накапливаются, занимая место и замедляя работу базы. VACUUM очищает эти “мертвые” строки, освобождая место и улучшая производительность. Он также обновляет статистику, что помогает оптимизатору запросов выбирать лучшие планы выполнения.

Читать далее

Индексы в PostgreSQL

2025-03-01 время чтения 4 мин Postgresql Ilya Brin

Представьте, что вы ищете любимую песню в старом mp3-плеере без плейлиста - крутите треки по одному, пока не наткнётесь на нужный. Это PostgreSQL без индексов: пыхтит, кряхтит и листает все строки в нашей огромной таблице.

А теперь добавьте индексы - и вот у вас уже Spotify с мгновенным поиском!

Быстро разберём, какие индексы есть в PostgreSQL, зачем они нужны и как превращают базу из черепахи в ракету. Плюс - парочка примеров из реальной жизни, чтобы прочувствовать разницу.

Читать далее