TGViewer
Postgres Professional Postgres Professional @postgres_pro · 3.53K subscribers
Post #1364 1.61K
В PostgreSQL стало на одно старое ограничение меньше: MultiXactOffset перевели на 64 бита. Это касается не редкой внутренней детали, а механизма мультитранзакций, который используется при блокировках строк, SELECT ... FOR SHARE/UPDATE и проверке внешних ключей.

Когда одну строку блокируют несколько транзакций, PostgreSQL не может сохранить их прямо в t_xmax: это поле в заголовке записи вмещает только одно значение. Поэтому в строке хранится идентификатор мультитранзакции, а ее состав PostgreSQL берет из pg_multixact: offsets указывает смещение, members хранит список участников.

Проблема была в том, что offsets оставался 32-битным. При этом мультитранзакции неизменяемы: если к блокировке добавляется еще одна транзакция, создается новая структура. Из-за этого при повторных блокировках одной и той же строки офсеты могут расти квадратично — 1, 3, 6, 10. На нагруженных системах это создавало реальный риск переполнения, а заметить его заранее было непросто.

Теперь PostgreSQL использует 8-байтные offsets, и риск такого переполнения минимален. Компромисс тоже есть: сегменты offsets выросли вдвое, а при обновлении нужна дополнительная конвертация через pg_upgrade. Но взамен PostgreSQL получает больше запаса до жестких лимитов и более предсказуемое администрирование.

Подробно о том, как устроены мультитранзакции, почему именно offsets были узким местом и что меняет этот патч, рассказали на Хабре.

Читайте нас в MAX 🤩
  • 👍 8
  • 🔥 7
More from @postgres_pro
  1. Sep 28, 2026🚀 Наш метод доступа iHeap ускоряет выборку из больших таблиц PostgreSQL и сам создает инд…
  2. Sep 24, 2026🚀 Показываем, как перенести тяжелые отчеты 1С на реплику Postgres Pro Enterprise для 1С и…
  3. Sep 23, 2026⏰ Через час, в 11:00 по Москве, начнем вебинар «Postgres Pro Backup Enterprise: от бэкапа…
  4. Sep 22, 2026🌅 Утро вечера мудренее. Особенно если завтра 23 сентября и последний день приема докладов…
  5. Sep 22, 2026Tarkett перенесла 1С и 1С:ЗУП с Microsoft SQL Server на Postgres Pro Enterprise для 1С — н…
  6. Sep 21, 2026🗂️ От бумажных картотек до поиска по смыслу — как базы данных стали основой цифровых серв…
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 →