TGViewer
Java Portal | Программирование Java Portal | Программирование @java_iibrary · 11.7K subscribers
Post #2557 1.35K
SELECT FOR UPDATE в PostgreSQL на самом деле выполняет запись.

На heap-странице Postgres у каждого tuple есть заголовок с метаданными этой записи.

Когда транзакция выполняет SELECT FOR UPDATE, у найденных строк обновляется заголовок: они помечаются как заблокированные, а в xmax записывается идентификатор транзакции, которая установила блокировку.

В частности, в заголовке infomask выставляются два бита:

HEAP_XMAX_EXCL_LOCK и HEAP_XMAX_LOCK_ONLY.

Из-за этого страница становится dirty, а изменение также попадает в WAL. Позже WAL может быть отправлен на standby-реплику.

Сама dirty-страница затем может быть сброшена на диск фоновым процессом.

После коммита блокировка снимается.

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

👉 Java Portal
  • 🔥 5
  • 👀 2
More from @java_iibrary
  1. Sep 21, 2026Шпаргалка по проектированию веб систем System Design 101 Подробное руководство по архитект…
  2. Sep 21, 2026Псс, хочешь перестать мониторить Telegram в поисках работы? 👀 Ты листаешь каналы, видишь…
  3. Sep 21, 2026💡 Java/Spring: отдавайте предпочтение constructor injection вместо @Autowired для полей.…
  4. Sep 20, 2026Если бы пришлось заново начинать свой путь в Java в 2026 году, я бы придерживался такого r…
  5. Sep 20, 2026Вайбкодим «Полный путь разработки AI-агентов: от MCP до Agentic RAG» Образовательная прогр…
  6. Sep 20, 2026💡 Java: сортируйте с помощью Comparator.comparing() и забудьте про громоздкий compare() ✅…
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 →