Size: a a a

pgsql – PostgreSQL

2021 March 18

D

Denis in pgsql – PostgreSQL
вот, этого понимания мне еще не хватало.
источник

s

sexst in pgsql – PostgreSQL
1) 30 не обязательно. Может у нас cache hit
2) Емнип, сначала делается действие ибо одиночная операция ничтожна по затратам, потом смотрится сколько в запасе токенов - если их осталось больше стоимости выполненного действия, то вычитаем и переходим к следующему действию, иначе уходим спать. То есть можно логически на какие-то единицы в "минус" уйти. В реальности там, опять же насколько помню,  целочисленная математика используется, поэтому такое странное описание.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Denis
понимаю, сюда пришел чтобы понять сильнее.
Итого что вынесено на данный момент:

есть vacuum_cost_limit
автомакуум смотрит на его значение
видит страницу которую хочет пометить как удаленную и разрешить ее переиспользование на будущее
Если страница есть в шаредбуферс то нужно отнять 1 от оставшегося vacuum_cost_limit и есть vacuum_cost_limit  > 0   сделать свое дело

Если страницы нет, все то же самое, но отнять 10

Если есть но данные "грязные" - все тоже самое, но отнять 30

так?
> Если есть но данные "грязные" - все тоже самое, но отнять 30

Да нет же!
20 отнимается как раз тогда, когда страница чистая! Вы понимаете, почему?
Я Вас уже в третий раз спрашиваю (кажется) — что vacuum делает со страницами с точки зрения терминологии clean/dirty?
источник

s

sexst in pgsql – PostgreSQL
Yaroslav Schekin
> Если есть но данные "грязные" - все тоже самое, но отнять 30

Да нет же!
20 отнимается как раз тогда, когда страница чистая! Вы понимаете, почему?
Я Вас уже в третий раз спрашиваю (кажется) — что vacuum делает со страницами с точки зрения терминологии clean/dirty?
Точно? 20 это же дорогой ценник созданной вакуумом необходимости в операции вывода на диск.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
sexst
Точно? 20 это же дорогой ценник созданной вакуумом необходимости в операции вывода на диск.
И какой изначально должна быть страница, чтобы этот ценник создался, а?
источник

s

sexst in pgsql – PostgreSQL
Изначально должна быть чистой, да. У нас взаимное непонимание в формулировках походу
источник

VY

Victor Yegorov in pgsql – PostgreSQL
sexst
Точно? 20 это же дорогой ценник созданной вакуумом необходимости в операции вывода на диск.
точно! cost charged when vacuum modifies a block that was previously clean
источник

s

sexst in pgsql – PostgreSQL
Если страница уже была грязная, то мы работы диску не добавили вакуумом, спору ноль
источник

s

sexst in pgsql – PostgreSQL
Поэтому УЖЕ грязные страницы налогом на запись не облагаются
источник

VY

Victor Yegorov in pgsql – PostgreSQL
sexst
Точно? 20 это же дорогой ценник созданной вакуумом необходимости в операции вывода на диск.
текущие косты старые очень, добавлялись для HDD. для NVMe SSD всё надо понижать, конечно
источник

s

sexst in pgsql – PostgreSQL
Victor Yegorov
текущие косты старые очень, добавлялись для HDD. для NVMe SSD всё надо понижать, конечно
В вопросе заданы такие цифры, я и пишу такие цифры. Был бы в вопросе миллион, я бы и миллион писал)
источник

EZ

Egor Zagorskiy in pgsql – PostgreSQL
всем добрый день. подскажите аналог мускулевского set global read_only=1 или flush tables with read lock ? мне надо запретить запись временно
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Egor Zagorskiy
всем добрый день. подскажите аналог мускулевского set global read_only=1 или flush tables with read lock ? мне надо запретить запись временно
нету такой возможности.
источник

s

sexst in pgsql – PostgreSQL
Таблицы то отдельные  можно залочить, это глобально всё разом нет
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Victor Yegorov
текущие косты старые очень, добавлялись для HDD. для NVMe SSD всё надо понижать, конечно
А ирония этого всего на самом деле в том, что если кто-то "по делу" начал читать про этот механизм (есть проблемы с autovacuum), то ему нужно механизм задержки в первую очередь отключить, IMHNSO. ;)
autovacuum_vacuum_cost_delay  = 0
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Egor Zagorskiy
всем добрый день. подскажите аналог мускулевского set global read_only=1 или flush tables with read lock ? мне надо запретить запись временно
А можете пояснить для незнакомых с MySQL — там это как-то "перебивается" на уровне отдельных сессий?
И насколько надёжно Вам нужно в PostgreSQL?
источник

EZ

Egor Zagorskiy in pgsql – PostgreSQL
Yaroslav Schekin
А можете пояснить для незнакомых с MySQL — там это как-то "перебивается" на уровне отдельных сессий?
И насколько надёжно Вам нужно в PostgreSQL?
строчка из руководства по репликации БД в яндекс-клауд так звучит:
Чтобы полностью завершить синхронизацию источника и приемника, запретите запись новых данных на сервере-источнике и перенесите PostgreSQL-sequences в кластер Managed Service for PostgreSQL

вот и думаю, как "запретить запись". в мускуле это глобальный лок
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Yaroslav Schekin
А ирония этого всего на самом деле в том, что если кто-то "по делу" начал читать про этот механизм (есть проблемы с autovacuum), то ему нужно механизм задержки в первую очередь отключить, IMHNSO. ;)
autovacuum_vacuum_cost_delay  = 0
ну… я бы прям сразу не отключал. там scale выкрутить как следует — и то может стать больно. и под присмотром надо
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Egor Zagorskiy
строчка из руководства по репликации БД в яндекс-клауд так звучит:
Чтобы полностью завершить синхронизацию источника и приемника, запретите запись новых данных на сервере-источнике и перенесите PostgreSQL-sequences в кластер Managed Service for PostgreSQL

вот и думаю, как "запретить запись". в мускуле это глобальный лок
Можно поставить на уровне сервера default_transaction_read_only, и те клиенты, которые не будут явно это перебивать (с помощью "BEGIN TRANSACTION READ WRITE;"), "логически" записать уже ничего не смогут.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Victor Yegorov
ну… я бы прям сразу не отключал. там scale выкрутить как следует — и то может стать больно. и под присмотром надо
А я бы отключал. Начинал бы с этого, более того.
источник