powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Vacuum Freeze, что происходит с номерами замороженных транзакций?
15 сообщений из 15, страница 1 из 1
Vacuum Freeze, что происходит с номерами замороженных транзакций?
    #39509445
ncux199rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Когда постргес замораживает транзакцию №1: делает ее видимой для всех снимков и переносит в бесконечно далекое прошлое.
Когда у нас заканчиваются номера транзакций после 2^32-1 надо опять выдавать новым транзакциям номер №1. Но ведь он уже присвоен замороженной транзакции!
Или на номера замороженных транзакций постргес не смотрит?
...
Рейтинг: 0 / 0
Vacuum Freeze, что происходит с номерами замороженных транзакций?
    #39509466
daevy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ncux199rusДобрый день.
Когда постргес замораживает транзакцию №1: делает ее видимой для всех снимков и переносит в бесконечно далекое прошлое.
Когда у нас заканчиваются номера транзакций после 2^32-1 надо опять выдавать новым транзакциям номер №1. Но ведь он уже присвоен замороженной транзакции!
Или на номера замороженных транзакций постргес не смотрит?

постгрес не замораживает сами транзакции - постгрес замораживает строки созданные транзакцией с номером N.
ID для замороженных строк = 2 зарезервирован и не выдается обычным транзакциям. поэтому строки с xmin = 2 всегда в прошлом.
в последних версиях пометки xmin=2 стали прям в тапле отмечать заморозку, детали тут - https://www.postgresql.org/message-id/E1VutHv-000611-ED@gemulon.postgresql.org
...
Рейтинг: 0 / 0
Vacuum Freeze, что происходит с номерами замороженных транзакций?
    #39509715
ncux199rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
daevy,
ID = 2 после версии 9.4 уже не используется. Заморозка строки определяется битами xmin_c, xmin_a = t.
YouTube Video
...
Рейтинг: 0 / 0
Vacuum Freeze, что происходит с номерами замороженных транзакций?
    #39509717
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ncux199rus,

Весь замес с заморозкой из-за того, что номера транзакций закольцованы в 32-битном пространстве — половина считается в прошлом, половина в будущем.
И если в базе высокая пишущая нагрузка, может получиться так, что старые номера транзакций (в давно добавленных записях) внезапно “прыгнут” во вторую половину и система перестанет их видеть.
Заморозка — специальная метка, говорящая, что не надо ориентироваться на номер транзакции в записи, запись должна быть видна всем.
...
Рейтинг: 0 / 0
Vacuum Freeze, что происходит с номерами замороженных транзакций?
    #39509723
ncux199rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vyegorovncux199rus,
Заморозка — специальная метка, говорящая, что не надо ориентироваться на номер транзакции в записи, запись должна быть видна всем.
То есть если номера транзакций пошли на третий, четвертый круг и т.д. то в таблице будут замороженные строки с одним номером и транзакции и они будут видны во всех снимках?

Теперь понятно.
...
Рейтинг: 0 / 0
Vacuum Freeze, что происходит с номерами замороженных транзакций?
    #39510072
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorovncux199rus,

что номера транзакций закольцованы в 32-битном пространстве
аккуратнее говорить про кольцо с несколькими выколотыми из кольца точками.
2 -- абсолютное прошлое. (видное из любой тр-ии).

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

есть еще и другие особые значения. 1 и 0 кажеццо. давно я в этом ковырялся.
...
Рейтинг: 0 / 0
Vacuum Freeze, что происходит с номерами замороженных транзакций?
    #39510082
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqаккуратнее говорить про кольцо с несколькими выколотыми из кольца точками.
Да, кольцо в 32-битовом диапазоне, в котором 2 бита зарезервированы под специальные нужды.
При заморозке “включается” второй бит.

Детальней тут: https://github.com/postgres/postgres/blob/master/src/include/access/transam.h#L20
...
Рейтинг: 0 / 0
Vacuum Freeze, что происходит с номерами замороженных транзакций?
    #39510085
ncux199rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwwq,
Номер 2 после версии 9.4 не используется. ссылка на ютуб. выше.
...
Рейтинг: 0 / 0
Vacuum Freeze, что происходит с номерами замороженных транзакций?
    #39510255
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ncux199rusqwwq,
Номер 2 после версии 9.4 не используется. ссылка на ютуб. выше.
прачо ролег вкрадцзе ?

я их на дух не переношу, этих, из этого геркулеса.
как то попробовал заслушать, ага.

и,чесгря, не думаю что вы что-то из услышанного правильно поняли.
...
Рейтинг: 0 / 0
Vacuum Freeze, что происходит с номерами замороженных транзакций?
    #39510511
daevy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ncux199rusqwwq,
Номер 2 после версии 9.4 не используется. ссылка на ютуб. выше.

а мне постгрес говорит что используются +)))

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
appdb=# SELECT count(*) FROM heap_page_items(get_raw_page('products', 0)) where t_xmin = 2;    
 count 
-------
   107
(1 row)

appdb=# SELECT t_xmin,t_xmax,t_ctid FROM heap_page_items(get_raw_page('products', 0)) limit 10;
 t_xmin | t_xmax | t_ctid 
--------+--------+--------
      2 |      0 | (0,1)
      2 |      0 | (0,2)
      2 |      0 | (0,3)
      2 |      0 | (0,4)
      2 |      0 | (0,5)
      2 |      0 | (0,6)
      2 |      0 | (0,7)
      2 |      0 | (0,8)
      2 |      0 | (0,9)
      2 |      0 | (0,10)
(10 rows)

appdb=# select version();
                                                 version                                                  
----------------------------------------------------------------------------------------------------------
 PostgreSQL 9.5.6 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.3.1-14ubuntu2) 5.3.1 20160413, 64-bit
(1 row)
...
Рейтинг: 0 / 0
Vacuum Freeze, что происходит с номерами замороженных транзакций?
    #39510564
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
daevy,

https://www.postgresql.org/docs/9.6/static/routine-vacuuming.html#VACUUM-FOR-WRAPAROUND Note: In PostgreSQL versions before 9.4, freezing was implemented by actually replacing a row's insertion XID with FrozenTransactionId, which was visible in the row's xmin system column. Newer versions just set a flag bit, preserving the row's original xmin for possible forensic use. However, rows with xmin equal to FrozenTransactionId (2) may still be found in databases pg_upgrade'd from pre-9.4 versions.
Also, system catalogs may contain rows with xmin equal to BootstrapTransactionId (1), indicating that they were inserted during the first phase of initdb. Like FrozenTransactionId, this special XID is treated as older than every normal XID.
...
Рейтинг: 0 / 0
Vacuum Freeze, что происходит с номерами замороженных транзакций?
    #39510582
daevy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов,

плохо у вас с ЧЮ
...
Рейтинг: 0 / 0
Vacuum Freeze, что происходит с номерами замороженных транзакций?
    #39510629
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
daevyплохо у вас с ЧЮ
Блин, реально подколол! ))
...
Рейтинг: 0 / 0
Vacuum Freeze, что происходит с номерами замороженных транзакций?
    #39510666
ncux199rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
daevyПавел Лузанов,

плохо у вас с ЧЮ
Правильно понимаю, что t_xmin = 2 - это номер обычной транзакции которая 107 раз обновилась?
...
Рейтинг: 0 / 0
Vacuum Freeze, что происходит с номерами замороженных транзакций?
    #39510745
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ncux199rusdaevyПавел Лузанов,

плохо у вас с ЧЮ
Правильно понимаю, что t_xmin = 2 - это номер обычной транзакции которая 107 раз обновилась?неправильно. вам же дали квоту из факинмануала.

автор However, rows with xmin equal to FrozenTransactionId (2) may still be found in databases pg_upgrade'd from pre-9.4 versions.

Also, system catalogs may contain rows with xmin equal to BootstrapTransactionId (1), indicating that they were inserted during the first phase of initdb. Like FrozenTransactionId, this special XID is treated as older than every normal XID.

они с 9.4. поменяли место закладки с публичного на малопубличный (что выиграли -- не ясно. и для какого типа носителей -- тоже). похоже до 9.6. наяривали вхолостую. только б рука не остыла, типа.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Vacuum Freeze, что происходит с номерами замороженных транзакций?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]