определить видна ли версия всем транзакциям. Но всё равно нужно определить видна ли версия текущей транзакции. И я не до конца понимаю как в этом случае visibility map помогает. В любом же случае приходится определять видимость для текущей транзакции, как знание о том, что версия видна всем транзакциям поможет?
Если она невидна текущей транзакцыи -- то она видна не всем транзакцыям.
т.е. она просто не пойдёт дальше выяснять видимость для текущей транзакции? А где можно почтитать про то, как сам процесс выяснения видимости происходит?
Но по visibility map мы же не можем определить, что транзакция не видна всем. Мы можем определить только то, что она видна всем. А если visivility map не даёт этой информации, то значт что может быть как видна так и не видна
Да, visibility map можэт только в некоторых случаях подтвердить, что запись видна. Во всех остальных случаях -- приходится действовать как если бы её не было.
Так у меня из этого и вопрос. Как понимание того, что транзакция видна всем, поможет оптимизировать вычсиление видимости для текущей транзакции? Если мы не можем получить точной информации из visibility map о том, что версия видна всем, то мы тогда идём в страницу табличного файла и это выясняем. Но потом же всё равно надо видимость для текущей транзакции вфяснить.
по моему так: если стоит бит в visibility map, тогда данные версии видны всем транзакциям и как следствие всегда видны текущей транзакции, то есть они достаточно старые для всех и для нее
Я вообще непонял этого текста.
Точно, я упускал тот момент, что гарантия видимости всем транзакциям подразумевает, что она будет 100% видна текущей из-за того. Т.е. само наличие 1 бита в visibility map уже гарантирует видимость и для текущей транзакции. И получается, что когда вакум выставляет 1 для страницы, то там будет лежать только одна версия строки, та которая видна всем. А если вдруг там появляются новые версии, то 1 меняется на 0. Правильно же?
нет, это заморозка. Это значит все версии которые там лежат - видны всем транзакциям, т.е. достаточно старые а, вейт. Так как вы сказали тоже можно сформилуровать, да
Я имел ввиду именно версию конретной логической строки. Типа там точно одна лежит, которая всем видна
https://www.postgresql.org/docs/current/storage-vm.html Первое же предложение — по-моему, очень понятно, нет?
Да, теперь очень понятное. До этого я его не так интерпретировал
Обсуждают сегодня