Comments 4
Егор, спасибо за отличную статью. Вопрос, связанный с заморозкой.
В заголовке фрагмента WAL хранится:
номер транзакции, к которой относится запись;
полагаю, что этот номер для чего-то используется, например, при восстановлении.
Но как быть если номер транзакции заморожен, прошло уже много времени и в системе появилась уже другая транзакция, номер которой совпадает с замороженным номером?
Как в целом процесс заморозки дружит с WAL с точки зрения номеров транзакций?
В заголовке фрагмента WAL хранится:
номер транзакции, к которой относится запись;
полагаю, что этот номер для чего-то используется, например, при восстановлении.
Но как быть если номер транзакции заморожен, прошло уже много времени и в системе появилась уже другая транзакция, номер которой совпадает с замороженным номером?
Как в целом процесс заморозки дружит с WAL с точки зрения номеров транзакций?
+1
Спасибо, Владимир.
Номер транзакции — да, используется при восстановлении (например, для установки xmin/xmax при проигровании записи о вставках/удалениях/обновлениях табличных строк).
Дружат нормально. Заморозка — это же некоторое действие со страницей, которое тоже попадает в журнал. При восстановлении мы сначала получим страницу в том виде, в котором она была до заморозки, потом восстановим заморозку и т. д.
+1
Понимаю, что статья давняя, но все же.
Каким образом работает чтение только что записанных данных?
Пример: добавили новую строку, она попала только в WAL, но не в основную базу. Делаем выборку и эта строка там есть. postgres как внутри это обрабатывает?
0
Sign up to leave a comment.
WAL в PostgreSQL: 2. Журнал предзаписи