Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Vacuum Freeze, что происходит с номерами замороженных транзакций? / 15 сообщений из 15, страница 1 из 1
23.08.2017, 16:40
    #39509445
ncux199rus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vacuum Freeze, что происходит с номерами замороженных транзакций?
Добрый день.
Когда постргес замораживает транзакцию №1: делает ее видимой для всех снимков и переносит в бесконечно далекое прошлое.
Когда у нас заканчиваются номера транзакций после 2^32-1 надо опять выдавать новым транзакциям номер №1. Но ведь он уже присвоен замороженной транзакции!
Или на номера замороженных транзакций постргес не смотрит?
...
Рейтинг: 0 / 0
23.08.2017, 17:06
    #39509466
daevy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vacuum Freeze, что происходит с номерами замороженных транзакций?
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
24.08.2017, 10:17
    #39509715
ncux199rus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vacuum Freeze, что происходит с номерами замороженных транзакций?
daevy,
ID = 2 после версии 9.4 уже не используется. Заморозка строки определяется битами xmin_c, xmin_a = t.
YouTube Video
...
Рейтинг: 0 / 0
24.08.2017, 10:22
    #39509717
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vacuum Freeze, что происходит с номерами замороженных транзакций?
ncux199rus,

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

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

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

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

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

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

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

и,чесгря, не думаю что вы что-то из услышанного правильно поняли.
...
Рейтинг: 0 / 0
25.08.2017, 14:00
    #39510511
daevy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vacuum Freeze, что происходит с номерами замороженных транзакций?
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
25.08.2017, 14:48
    #39510564
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vacuum Freeze, что происходит с номерами замороженных транзакций?
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
25.08.2017, 15:15
    #39510582
daevy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vacuum Freeze, что происходит с номерами замороженных транзакций?
Павел Лузанов,

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

плохо у вас с ЧЮ
Правильно понимаю, что t_xmin = 2 - это номер обычной транзакции которая 107 раз обновилась?
...
Рейтинг: 0 / 0
25.08.2017, 19:06
    #39510745
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vacuum Freeze, что происходит с номерами замороженных транзакций?
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
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Vacuum Freeze, что происходит с номерами замороженных транзакций? / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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