Очень интересно, но не все понятно) 1) В итоге как будут работать 2 параллельные транзакции обращаясь к последнему ctid? 2) Разве любая подвисшая транзакция может заафектить видимость индексов?
2. Как я понял, индекс был невидимый потому что были старые версии строк. А автовакуум их не мог почистить пока первая транзакция не закончилась, так как она держала «горизонт очистки»
К последнему кейсу с автовакумом: можно ставить максимальную паузу, и пытаться транкейтить, пока и если время не вышло, иначе бросать затею. так хотя бы пауза будет предсказуема
Зачем добавлять поле last_updated, если можно было просто сделать индекс на cnt, и так же выбирать максимальный? Не решило бы проблему?... А, ну да, если счетчики могут еще и уменьшаться, то не решило бы.
cnt может и уменьшаться во времени. То есть cnt - не монотонно растёт. Но честно, время тоже не монотонно. Поэтому лучше добавить колонку version вместо last_updated. И её инкрементить.
Михаилу следует узнать о термине СУБД (DBMS), тогда у него из речи исчезнут странные фразы типа "база данных управляет базой данных". Смотрите, Михаил, PostgreSQL -- это СУБД, это программа. А база данных -- это то, чем СУБД управляет
Извините что так получилось. Цель была пояснить на примерах важность понимания инструментов с которыми работает разработчик. Можно посмотреть доклад с Highload 2024, там больше примеров, может быть более интересно (проскипав первые 25 минут) И спасибо за обратную связь!
Докладчик оставил приятное впечатление. Было интересно послушать про такие хитрые кейсы
Отличный доклад, спасибо!
Спасибо!
Чем больше узнаю нюансов про работу бд, тем больше понимаю, как много еще не знаю. Спасибо за доклад.
Отлиичный докладчик. Большое спасибо за описаниие и решение проблем
18:25 блоками здесь страницы postgres называют?
Да, в PG страницы и блоки означает одно и тоже, почти....
Спасибо за доклад, было интересно слушать! Также понравился подкаст на javaswag :)
Очень интересно, но не все понятно)
1) В итоге как будут работать 2 параллельные транзакции обращаясь к последнему ctid?
2) Разве любая подвисшая транзакция может заафектить видимость индексов?
2. Как я понял, индекс был невидимый потому что были старые версии строк. А автовакуум их не мог почистить пока первая транзакция не закончилась, так как она держала «горизонт очистки»
К последнему кейсу с автовакумом: можно ставить максимальную паузу, и пытаться транкейтить, пока и если время не вышло, иначе бросать затею. так хотя бы пауза будет предсказуема
Идея интересная, то есть сделать параметр vacuum_truncate_timeout и если не успели, то пропускать truncate. Отличное предложение!
Зачем добавлять поле last_updated, если можно было просто сделать индекс на cnt, и так же выбирать максимальный? Не решило бы проблему?... А, ну да, если счетчики могут еще и уменьшаться, то не решило бы.
cnt может и уменьшаться во времени. То есть cnt - не монотонно растёт. Но честно, время тоже не монотонно. Поэтому лучше добавить колонку version вместо last_updated. И её инкрементить.
Я так понимаю, это тот же доклад, что и на открытой сессии hl++
Да)
@@antonmuzeev почти. В HL добавлено ещё пара случаев.
Михаилу следует узнать о термине СУБД (DBMS), тогда у него из речи исчезнут странные фразы типа "база данных управляет базой данных". Смотрите, Михаил, PostgreSQL -- это СУБД, это программа. А база данных -- это то, чем СУБД управляет
Да, согласен. Спасибо за комментарий :)
Получается первый)
у меня отображает, что коммент @bananasba был первым, так что увы..
очень скучно и затянуто
Извините что так получилось. Цель была пояснить на примерах важность понимания инструментов с которыми работает разработчик. Можно посмотреть доклад с Highload 2024, там больше примеров, может быть более интересно (проскипав первые 25 минут)
И спасибо за обратную связь!
@@MiZhka1мне, как ораклисту, было интересно и познавательно
Отличный доклад, спасибо!