powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / непонятка с xmin в текущей транзакции
18 сообщений из 18, страница 1 из 1
непонятка с xmin в текущей транзакции
    #38965150
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM
Код: plaintext
1.
2.
xmin

    The identity (transaction ID) of the inserting transaction for this row version.


-- пытаюсь отстроиться от записей вставленных в текущей транзакции, т.е. прочитать действительно закоммиченные результаты.

примерно так :

Код: sql
1.
2.
3.
4.
5.
SELECT * FROM tabname WHERE 
		NOT xideq( xmin
				,(txid_current() % (4294967296)) ::text::xid
				)
		;


(см 17470725 )

записываю в табличку аудита результат транзакции по вставке большого числа записей.
в ней же, фиксирую последний "закоммиченный" до текущей транзакции id аудита -- по технологии отсева текущих id, приведенной выше

конкурентов по записи в аудит нет.

-- вижу, что полученные как "видимые" id -- присвоены в той же транзакции. (по 2 записи на id).
начинаю смотреть xmin и (txid_current() % (4294967296)) нотификацией -- вижу, что xmin медленно растёт. а (txid_current() % (4294967296) ) -- стабилен. Совпадение -- только в первой записи -- двух.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
NOTICE:  	ev_id 8071,_xmin 13530822,_xmax 0,_txid_current 13531155;
NOTICE:  	ev_id 8071,_xmin 13530822,_xmax 0,_txid_current 13531155;
NOTICE:  	ev_id 8073,_xmin 13531157,_xmax 0,_txid_current 13531155;
NOTICE:  	ev_id 8073,_xmin 13531157,_xmax 0,_txid_current 13531155;
NOTICE:  	ev_id 8075,_xmin 13531159,_xmax 0,_txid_current 13531155;
NOTICE:  	ev_id 8075,_xmin 13531159,_xmax 0,_txid_current 13531155;
NOTICE:  	ev_id 8077,_xmin 13531161,_xmax 0,_txid_current 13531155;
NOTICE:  	ev_id 8077,_xmin 13531161,_xmax 0,_txid_current 13531155;



куда крестьянину податься ? Почему xmin записей вставленных одной транзакцией растет в процессе транзакции? [это всё -- ещё до коммита]

основной вопрос:
как правильно закрыть глаза на всё то и только то, что вставлено в текущей транзакции ?


вообще-то видел вот это 16698801 там автор не делает поправки на цикличность.
поэтому тогда не придал.

но поправка не спасает (или речь о разных транзакциях)

Код: sql
1.
2.
3.
select 4359781591 % (4294967296) ,  62312404
---------------
64814295;62312404



т.е. реально в записях одной транзакции xmin растет (и это происходит без привлечения какой--либо механики по froze (когда надо двигать уже массово и движком "to prevent..." и т.п.)

почему же в справке про это как-то не особо видно ?


//вопрос факультативный, советы вида "а что вы делаете -- не надо этого делать" -- несколько неуместны.
Я , судя по справке, полагал, что у меня есть инструмент отстроиться от записей, изменённых в текущей транзакции -- из неё же (не следя за всей логикой транзакции, а врезавшись в некую точку простеньким инструментом) -- и вот это полагание оказалось ложным. пичалька.
...
Рейтинг: 0 / 0
непонятка с xmin в текущей транзакции
    #38965249
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq,

А попробуйте тоже самое сделать запустив транзакцию с уровнем изоляции REPEATABLE READ.
Если это поможет (не факт но мне кажется что должно) - я попробую рассказать что именно происходит.
Кратко: в REPEATABLE READ каждый новый запрос работает с новым snapshot (и фактически с новым xmin).
Примечание - это только теория.

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
непонятка с xmin в текущей транзакции
    #38965262
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk,

ок, попытаюсь.

пока грешу на т.н. subtransactions
там несколько триггеров внутри отрабатывает с обработкой исключения
и только один из них -- аудиторский
реально последовательность xmin,current_xtid, ctid в табличке аудита (куда я current_xtid() пишу через DEFAULT) примерно такая:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
13535604;13535604;5
13535606;13535604;10
13535604;13535604;16
...............
...............
13539602;13535604;21991
13535604;13535604;21997
13539604;13535604;22002
13535604;13535604;22008
13539606;13535604;22013



и пролезть через поиск их в xip_list текущего снапшота, похоже не удастся. могу заблуждаться.
...
Рейтинг: 0 / 0
непонятка с xmin в текущей транзакции
    #38965315
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. REPEATABLE READ повёл себя точно так же.

т.е. вопрос, вероятно, в том, как выяснить , что лежит в xmin -- "txids of subtransaction" OR txids of transaction

и как выяснить предка, если это subtransaction

(хотя бы в момент самой этой транзакции, когда нам "дано в ощущения" несколько больше, чем xmin)
...
Рейтинг: 0 / 0
непонятка с xmin в текущей транзакции
    #38965324
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OFFTOP:

вопрос
а xmin длиной с bigint пока не планируется ?
...
Рейтинг: 0 / 0
непонятка с xmin в текущей транзакции
    #38965377
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выкрутился, кааца:
Код: sql
1.
2.
3.
4.
5.
		NOT /* xideq( xmin
				,(txid_current() % (4294967296)) ::text::xid
				)
			*/
			txid_current() = ev_txid -- я болван


в моем случае это специальная табличка, в которой есть зафиксированный txid_current() . а он -- стабилен , даже при наличии обработок исключения. (pgq--батчевание на этом же собрано, похоже)

но что в общем случае я видеть, что моё, свеженажитое, - а что уже закоммиченное -- не умею -- печально.
...
Рейтинг: 0 / 0
непонятка с xmin в текущей транзакции
    #38965443
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq,

Расширение xmin/xmax до bigint увеличит tuple header c 24 байт до 32 байт (что очень печально) и гарантированно сломает pg_upgrade.
Разговоры об этом давно идут но пока не нашлось настоящего буйного чтобы это продавить или хотя-бы реализовать в виде прототипа.
Идея с кучей плюсов и с кучей же минусов.

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
непонятка с xmin в текущей транзакции
    #38965469
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk,

я не к тому, чтобы ссылаться на xmin как на txid_current() -- они, с учетом сущ-я сабтранзакций, видимо разные (от begin до end блока исключений вероятно болтается то, что обзывается сабтранзакцией, со своим txid). и дело не в длине, а в savepoint-ах.


это был офтоп -- очень печально иметь базу большого объёма с большим же потоком транзакций -- воркеры всё время затыкаются, сколько не увеличивай их число, одним только to prevent wraparound--ом. [надо успеть прокрутить в цилиндрической координате объём базы за время, за которое набегает длина цилиндра "в попугаях" -- транзакциях -- белка в колесе, одним словом]

хоть слово [опцию conf-а] какое-то надо бы придумать -- запретить, например, стандартным воркерам заниматься wraparroun-ом, пусть движок сам поднимает сверх лимита, что ли. всё равно -- оно без этого жить не может -- вот пусть сам себе и поднимает, .

а для малых -- оно действительно дешевле не шевелиться. во всех смыслах.
...
Рейтинг: 0 / 0
непонятка с xmin в текущей транзакции
    #38965558
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Bogukqwwq,

Расширение xmin/xmax до bigint увеличит tuple header c 24 байт до 32 байт (что очень печально) и гарантированно сломает pg_upgrade.
Разговоры об этом давно идут но пока не нашлось настоящего буйного чтобы это продавить или хотя-бы реализовать в виде прототипа.
Идея с кучей плюсов и с кучей же минусов.

А Вы не могли бы рассказать подробнее именно о куче плюсов и минусов?

Я сходу вижу только то, что (+) концепцию FREEZE можно выбросить, но (-) во всех маленьких базах в каждой записи будут 4 нулевых байта, которые этой базе никогда не пригодятся.
...
Рейтинг: 0 / 0
непонятка с xmin в текущей транзакции
    #38965577
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymous,

идеальной была бы опция длины полей при создании кластера.
тогда маленькие остались бы с малой накладной по длине
а большие -- с малой (даже 0-вой) накладной по частоте оборачивания freeze

в принципе, если ну очень быстро крутить транзы -- писать и стирать, писать и стирать -- то и очень маленькую БД можно заставить прокручиваться -- всё определит поток транзакций
...
Рейтинг: 0 / 0
непонятка с xmin в текущей транзакции
    #38965732
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwwqPgSQLAnonymous,
идеальной была бы опция длины полей при создании кластера.
тогда маленькие остались бы с малой накладной по длине
а большие -- с малой (даже 0-вой) накладной по частоте оборачивания freeze

IMHO, было бы не так и плохо, если бы они так сделали сразу (особенно если
по умолчанию использовать 64 бита и предупреждать о последствиях использования 32),
и тогда самого понятия FREEZE, всего связанного с ним кода (и багов в нём),
параметров и VACUUM-ов могло бы не быть. ;)

Конечно, те, кто неправильно рассчитал объём транзакций в своих базах, попадали бы на
"database is not accepting commands to avoid wraparound data loss in database ..." и
dump/restore, но кому их жалко? ;)

qwwqв принципе, если ну очень быстро крутить транзы -- писать и стирать,
писать и стирать -- то и очень маленькую БД можно заставить прокручиваться -- всё определит поток транзакций
Да, конечно. Под "маленькими" я имел в виду те, где 2^31 транзакций никогда и наберётся...
...
Рейтинг: 0 / 0
непонятка с xmin в текущей транзакции
    #38966426
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.postgresql.org/docs/9.4/static/sql-createtrigger.html

Deffered trigger

И там смотрите всё по now например. Вы все таки решение не ту задачу и не так
...
Рейтинг: 0 / 0
непонятка с xmin в текущей транзакции
    #38966516
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha Tyurin http://www.postgresql.org/docs/9.4/static/sql-createtrigger.html

Deffered trigger

И там смотрите всё по now например. Вы все таки решение не ту задачу и не так
о, наш тигра набежал
даже наскочил
короче -- напрыгнул

чего то сказать хотели, скакучий вы нашЪ ?
с тренингов выпустили ?

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

кто, кстати, тут хоть что-то говорил про констрейнт триггера ?
ау ?
-- да и про задачу никто не заикался

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

и зашит он, инструмент сей, в xmin -- ну незакомиченную точно ещё не пофризили.

Но тут-то меня справкой и набманули, подлые намбанщики.
до чего довёл rtfm этот фигляр ПЖ.
и возник естественный факультативный вопрос -- как восстановить утерянную уверенность.


по факультативному вопросу имеете заявить? полосатенький вы нашЪ
или now() -- вот вашЪ ответ ? на неподготовленной табличке ? и now() ? а как оно, в неподготовленную-то проникнет ? а в подготовленную-то я эвон current txid положу, оно тоже работает. и даже лучше.
...
Рейтинг: 0 / 0
непонятка с xmin в текущей транзакции
    #38966586
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq,

Нету у вас никакого инструмента. Есть видимость txid в снапшоте

http://www.postgresql.org/docs/9.4/static/functions-info.html
Table 9-61. Transaction IDs and Snapshots


Это да. Но это не про вас. Потому что вы делаете как всегда не то) вас бы в правильное русло так сказать
...
Рейтинг: 0 / 0
непонятка с xmin в текущей транзакции
    #38966613
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha Tyurinqwwq,

Нету у вас никакого инструмента. Есть видимость txid в снапшоте

http://www.postgresql.org/docs/9.4/static/functions-info.html
Table 9-61. Transaction IDs and Snapshots


Это да. Но это не про вас. Потому что вы делаете как всегда не то) вас бы в правильное русло так сказатьо, любезный кинул в меня ссылкой, которую я давно облазил [по диагонали, по другому давно разучился] на предмет наличия разъяснений что ж такое "txids of subtransactions"
хотя бы вот тут
авторThe list does not include txids of subtransactions.
но "ува, ува, и голова барабартает с плеч"

я пока расшифровал это как txid сейвпонтов (блоков с обработками исключений -- в случае plpgsql) правильно или нет -- не уверен. Спасает то, что не смотря на сейвпойнты txid_current() выдает стабильно txid "собственно транзакции". [которые и видны в снапшотах, которая видимость и используется в процедуре сборки батча между двумя тиками pgq]

внимание, вопрос :
-- где тут было о том, чем я занимаюсь ?
и вопрос 2:
-- куда вам следует идти в случае, если вы в этой теме не найдёте ответа на первый ?

вот вот, идите, идите.
...
Рейтинг: 0 / 0
непонятка с xmin в текущей транзакции
    #38966620
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам только одно поможет -- чтение до полного прояснения

http://www.opennet.ru/docs/RUS/smart_question/
...
Рейтинг: 0 / 0
непонятка с xmin в текущей транзакции
    #38966639
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha TyurinВам только одно поможет -- чтение до полного прояснения

http://www.opennet.ru/docs/RUS/smart_question/
миша, миша
-- вам-то уже точно ничего не поможет

это, как вы помните, я диагностировал с первого наблюдения уже много лет тому назад
...
Рейтинг: 0 / 0
непонятка с xmin в текущей транзакции
    #38966650
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем -- пока фиксирую неполноту и бессвязность ртфм-а в части термина "subtransaction"

поиск подтверждает мою версию трактовки :
авторsubtransaction commit (RELEASE SAVEPOINT or exit from a PL/pgSQL exception block).

и соответственно справка в части процитированной в старте
Код: plaintext
1.
2.
xmin

    The identity (transaction ID) of the inserting transaction for this row version.

не полна -- т.к. в xmin может валяться и "subtransaction id" , как показали замеры.
[не говоря о заморозке и прочих тонкостях]
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / непонятка с xmin в текущей транзакции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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