|
|
|
непонятка с xmin в текущей транзакции
|
|||
|---|---|---|---|
|
#18+
RTFM Код: plaintext 1. 2. -- пытаюсь отстроиться от записей вставленных в текущей транзакции, т.е. прочитать действительно закоммиченные результаты. примерно так : Код: sql 1. 2. 3. 4. 5. (см 17470725 ) записываю в табличку аудита результат транзакции по вставке большого числа записей. в ней же, фиксирую последний "закоммиченный" до текущей транзакции id аудита -- по технологии отсева текущих id, приведенной выше конкурентов по записи в аудит нет. -- вижу, что полученные как "видимые" id -- присвоены в той же транзакции. (по 2 записи на id). начинаю смотреть xmin и (txid_current() % (4294967296)) нотификацией -- вижу, что xmin медленно растёт. а (txid_current() % (4294967296) ) -- стабилен. Совпадение -- только в первой записи -- двух. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. куда крестьянину податься ? Почему xmin записей вставленных одной транзакцией растет в процессе транзакции? [это всё -- ещё до коммита] основной вопрос: как правильно закрыть глаза на всё то и только то, что вставлено в текущей транзакции ? вообще-то видел вот это 16698801 там автор не делает поправки на цикличность. поэтому тогда не придал. но поправка не спасает (или речь о разных транзакциях) Код: sql 1. 2. 3. т.е. реально в записях одной транзакции xmin растет (и это происходит без привлечения какой--либо механики по froze (когда надо двигать уже массово и движком "to prevent..." и т.п.) почему же в справке про это как-то не особо видно ? //вопрос факультативный, советы вида "а что вы делаете -- не надо этого делать" -- несколько неуместны. Я , судя по справке, полагал, что у меня есть инструмент отстроиться от записей, изменённых в текущей транзакции -- из неё же (не следя за всей логикой транзакции, а врезавшись в некую точку простеньким инструментом) -- и вот это полагание оказалось ложным. пичалька. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 12:49 |
|
||
|
непонятка с xmin в текущей транзакции
|
|||
|---|---|---|---|
|
#18+
qwwq, А попробуйте тоже самое сделать запустив транзакцию с уровнем изоляции REPEATABLE READ. Если это поможет (не факт но мне кажется что должно) - я попробую рассказать что именно происходит. Кратко: в REPEATABLE READ каждый новый запрос работает с новым snapshot (и фактически с новым xmin). Примечание - это только теория. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 13:59 |
|
||
|
непонятка с xmin в текущей транзакции
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, ок, попытаюсь. пока грешу на т.н. subtransactions там несколько триггеров внутри отрабатывает с обработкой исключения и только один из них -- аудиторский реально последовательность xmin,current_xtid, ctid в табличке аудита (куда я current_xtid() пишу через DEFAULT) примерно такая: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. и пролезть через поиск их в xip_list текущего снапшота, похоже не удастся. могу заблуждаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 14:08 |
|
||
|
непонятка с xmin в текущей транзакции
|
|||
|---|---|---|---|
|
#18+
1. REPEATABLE READ повёл себя точно так же. т.е. вопрос, вероятно, в том, как выяснить , что лежит в xmin -- "txids of subtransaction" OR txids of transaction и как выяснить предка, если это subtransaction (хотя бы в момент самой этой транзакции, когда нам "дано в ощущения" несколько больше, чем xmin) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 14:39 |
|
||
|
непонятка с xmin в текущей транзакции
|
|||
|---|---|---|---|
|
#18+
OFFTOP: вопрос а xmin длиной с bigint пока не планируется ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 14:44 |
|
||
|
непонятка с xmin в текущей транзакции
|
|||
|---|---|---|---|
|
#18+
выкрутился, кааца: Код: sql 1. 2. 3. 4. 5. в моем случае это специальная табличка, в которой есть зафиксированный txid_current() . а он -- стабилен , даже при наличии обработок исключения. (pgq--батчевание на этом же собрано, похоже) но что в общем случае я видеть, что моё, свеженажитое, - а что уже закоммиченное -- не умею -- печально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 15:15 |
|
||
|
непонятка с xmin в текущей транзакции
|
|||
|---|---|---|---|
|
#18+
qwwq, Расширение xmin/xmax до bigint увеличит tuple header c 24 байт до 32 байт (что очень печально) и гарантированно сломает pg_upgrade. Разговоры об этом давно идут но пока не нашлось настоящего буйного чтобы это продавить или хотя-бы реализовать в виде прототипа. Идея с кучей плюсов и с кучей же минусов. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 16:00 |
|
||
|
непонятка с xmin в текущей транзакции
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, я не к тому, чтобы ссылаться на xmin как на txid_current() -- они, с учетом сущ-я сабтранзакций, видимо разные (от begin до end блока исключений вероятно болтается то, что обзывается сабтранзакцией, со своим txid). и дело не в длине, а в savepoint-ах. это был офтоп -- очень печально иметь базу большого объёма с большим же потоком транзакций -- воркеры всё время затыкаются, сколько не увеличивай их число, одним только to prevent wraparound--ом. [надо успеть прокрутить в цилиндрической координате объём базы за время, за которое набегает длина цилиндра "в попугаях" -- транзакциях -- белка в колесе, одним словом] хоть слово [опцию conf-а] какое-то надо бы придумать -- запретить, например, стандартным воркерам заниматься wraparroun-ом, пусть движок сам поднимает сверх лимита, что ли. всё равно -- оно без этого жить не может -- вот пусть сам себе и поднимает, . а для малых -- оно действительно дешевле не шевелиться. во всех смыслах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 16:15 |
|
||
|
непонятка с xmin в текущей транзакции
|
|||
|---|---|---|---|
|
#18+
Maxim Bogukqwwq, Расширение xmin/xmax до bigint увеличит tuple header c 24 байт до 32 байт (что очень печально) и гарантированно сломает pg_upgrade. Разговоры об этом давно идут но пока не нашлось настоящего буйного чтобы это продавить или хотя-бы реализовать в виде прототипа. Идея с кучей плюсов и с кучей же минусов. А Вы не могли бы рассказать подробнее именно о куче плюсов и минусов? Я сходу вижу только то, что (+) концепцию FREEZE можно выбросить, но (-) во всех маленьких базах в каждой записи будут 4 нулевых байта, которые этой базе никогда не пригодятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 16:55 |
|
||
|
непонятка с xmin в текущей транзакции
|
|||
|---|---|---|---|
|
#18+
PgSQLAnonymous, идеальной была бы опция длины полей при создании кластера. тогда маленькие остались бы с малой накладной по длине а большие -- с малой (даже 0-вой) накладной по частоте оборачивания freeze в принципе, если ну очень быстро крутить транзы -- писать и стирать, писать и стирать -- то и очень маленькую БД можно заставить прокручиваться -- всё определит поток транзакций ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 17:04 |
|
||
|
непонятка с xmin в текущей транзакции
|
|||
|---|---|---|---|
|
#18+
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 транзакций никогда и наберётся... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 19:45 |
|
||
|
непонятка с xmin в текущей транзакции
|
|||
|---|---|---|---|
|
#18+
http://www.postgresql.org/docs/9.4/static/sql-createtrigger.html Deffered trigger И там смотрите всё по now например. Вы все таки решение не ту задачу и не так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 14:51 |
|
||
|
непонятка с xmin в текущей транзакции
|
|||
|---|---|---|---|
|
#18+
Misha Tyurin http://www.postgresql.org/docs/9.4/static/sql-createtrigger.html Deffered trigger И там смотрите всё по now например. Вы все таки решение не ту задачу и не так о, наш тигра набежал даже наскочил короче -- напрыгнул чего то сказать хотели, скакучий вы нашЪ ? с тренингов выпустили ? а то я всё жду, когда наш супер спец по пгкю придёт, сокрушаюсь -- так мол и останусь весь из себя недождатый. кто, кстати, тут хоть что-то говорил про констрейнт триггера ? ау ? -- да и про задачу никто не заикался я просто, было дело, возомнил, что у меня есть инструмент для отделения от всех видимых в транзакции строк -- строк, видимых только в данной транзакции. точечный такой, который хоть функцией, на неподготовленной табличке. и зашит он, инструмент сей, в xmin -- ну незакомиченную точно ещё не пофризили. Но тут-то меня справкой и набманули, подлые намбанщики. до чего довёл rtfm этот фигляр ПЖ. и возник естественный факультативный вопрос -- как восстановить утерянную уверенность. по факультативному вопросу имеете заявить? полосатенький вы нашЪ или now() -- вот вашЪ ответ ? на неподготовленной табличке ? и now() ? а как оно, в неподготовленную-то проникнет ? а в подготовленную-то я эвон current txid положу, оно тоже работает. и даже лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 15:47 |
|
||
|
непонятка с xmin в текущей транзакции
|
|||
|---|---|---|---|
|
#18+
qwwq, Нету у вас никакого инструмента. Есть видимость txid в снапшоте http://www.postgresql.org/docs/9.4/static/functions-info.html Table 9-61. Transaction IDs and Snapshots Это да. Но это не про вас. Потому что вы делаете как всегда не то) вас бы в правильное русло так сказать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 16:28 |
|
||
|
непонятка с xmin в текущей транзакции
|
|||
|---|---|---|---|
|
#18+
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: -- куда вам следует идти в случае, если вы в этой теме не найдёте ответа на первый ? вот вот, идите, идите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 16:49 |
|
||
|
непонятка с xmin в текущей транзакции
|
|||
|---|---|---|---|
|
#18+
Вам только одно поможет -- чтение до полного прояснения http://www.opennet.ru/docs/RUS/smart_question/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 17:00 |
|
||
|
непонятка с xmin в текущей транзакции
|
|||
|---|---|---|---|
|
#18+
Misha TyurinВам только одно поможет -- чтение до полного прояснения http://www.opennet.ru/docs/RUS/smart_question/ миша, миша -- вам-то уже точно ничего не поможет это, как вы помните, я диагностировал с первого наблюдения уже много лет тому назад ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 17:14 |
|
||
|
непонятка с xmin в текущей транзакции
|
|||
|---|---|---|---|
|
#18+
В общем -- пока фиксирую неполноту и бессвязность ртфм-а в части термина "subtransaction" поиск подтверждает мою версию трактовки : авторsubtransaction commit (RELEASE SAVEPOINT or exit from a PL/pgSQL exception block). и соответственно справка в части процитированной в старте Код: plaintext 1. 2. не полна -- т.к. в xmin может валяться и "subtransaction id" , как показали замеры. [не говоря о заморозке и прочих тонкостях] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 17:26 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38966586&tid=1997978]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 341ms |

| 0 / 0 |
