TGViewer
Java: fill the gaps Java: fill the gaps @java_fillthegaps · 12.3K subscribers
Post #599 13.5K
База по Postgres

Сегодня расскажу про 3 важных сущности Postgres: соединения, буфер и WAL. Это та база, которая точно пригодится на практике.

💫Соединение (connection)💫

Чтобы пообщаться с БД, сервис устанавливает коннекшн с БД. Но что такое “соединение”, и зачем оно нужно?

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

В Postgres проблема решается просто - работа с каждым клиентом происходит в отдельном процессе. Переносим вопрос изоляции на операционную систему💅

Так делает не только постгрес. Если откроете 10 вкладок в Google Chrome, в диспетчере задач появятся 10 новых процессов.

Решение простое и надёжное, но минусы тоже есть:
🌚 Новый процесс долго запускается. В ОС происходит куча всего, чтобы обеспечить изоляцию памяти
🌚 Большой расход оперативки

Пул соединений нужен, чтобы не создавать процессы заново каждый раз и ограничить их количество.

💫Буфер💫

Также в оперативке создаётся область общей памяти, которая называется буфер. Там обитают данные, которые только что прочитаны с диска, и которые скоро отправятся на запись.

Почему апдейты не сразу пишутся на диск?

Запись на диск - медленная операция. Поэтому выполняется асинхронно, чтобы не заставлять пользователя ждать.

С буфером вы встретитесь при выполнении EXPLAIN ANALYZE. Строка
Buffers: shared hit=32 read=5000

означает, что в буфер с диска прочитано 5000 страниц/блоков. Каждый блок 8 КБ, итого с диска считано 40 Мб данных.

Эти цифры часто нужны для анализа нагрузки.

💫WAL💫

Свежие обновления не сразу пишутся на диск, а некоторое время лежат только в оперативной памяти.

В случае сбоя данные потеряются. Чтобы этого не произошло, суть изменений записывается в конец специального файлика, который называется WAL (write ahead log).

Что, запись на диск? Это же медленно!!!1

Все верно, но сравните масштаб. В случае апдейта изменения встраиваются в огромную структуру, надо обновить индексы, плотнее укомплектовать данные, обновить статистику и ещё миллион вещей.

В случае WAL мы пишем минимум информации в конец файла. Это гораздо быстрее💫

Помимо повышения надёжности, WAL используется для некоторых видов репликации.

Вот и всё, ничего сложного:) Ставьте огонечки постам, это меня очень радует😊
  • 🔥 726
  • 👍 55
  • ❤ 42
More from @java_fillthegaps
  1. Apr 30, 2026Get Your Hands Dirty on Clean Architecture: отзыв на книгу Когда я подняла тему чистой арх…
  2. Apr 27, 2026​Clean Architecture: отзыв на книгу Наконец-то дочитала книгу Clean Architecture Роберта М…
  3. Mar 4, 2026Как переиспользовать контекст в интеграционных тестах Сегодня расскажу базовый минимум для…
  4. Mar 4, 2026Post #660
  5. Mar 4, 2026Тестовый контекст поднимается 2 минуты. У нас 4 класса с интеграционными тестами, их конфи…
  6. Feb 25, 2026Чистая архитектура. Главы 3-5 Продолжаем спидран по Clean Architecture Роберта Мартина. ⭐️…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →