Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Большие таблицы и vacuum/autovacuum / 9 сообщений из 9, страница 1 из 1
09.07.2020, 18:08
    #39977853
flashgun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большие таблицы и vacuum/autovacuum
Добрый день!

Мой пет-проект в свободное от работы время плавно растёт, объём базы 350+ гигабайт, и три особенно большие таблицы, в 310, 350 и 110 млн строк начинают требовать от меня регулярного внимания. Две партиционированы на 16 частей по хешу, одна по году-месяцу. Во все таблицы идут insert/update. Примерно раз в месяц я вижу, что они как-то неприлично разрослись, тогда я вручную запускаю vacuum full, после чего всё опять летает.

При этом все параметры autovacuum стоят в дефолте, сам процесс непрерывно что-то вакуумит, работа кипит. Но я понимаю, что некоторые таблицы можно вообще не трогать неделями, а некоторые надо вообще говоря чистить весьма регулярно.

Короче, мне перестал нравиться автовакуум в том виде, в котором я наблюдаю его работу сейчас.

Перед тем, как погрузить своё сознание в пучину изучения тонкостей его настройки, хочу посоветоваться.

Не лучше ли будет для ряда больших таблиц отключить автовакуум вообще и написать набор костылей и подпорок, которые будут регулярно, в заданные мною окна, выполнять vacuum full? Не будет ли это "шагом назад"? Не слишком ли самонадеянно я посчитаю себя "умнее разработчиков постгрес", которые ни в коем случае не советуют отключать автовакуум?

Отключать я его и не планирую. Маленькие таблицы -- да бог с ними. А вот большие лучше бы я делал сам, вручную.

Согласны?
...
Рейтинг: 0 / 0
09.07.2020, 18:35
    #39977861
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большие таблицы и vacuum/autovacuum
Настраивайте автовакуум на более активную работу.

flashgun
непрерывно что-то вакуумит, работа кипит

Спит он непрерывно на дефолтных настройках, а не работает.

То что вакуумить не нужно - автовакуум трогать и не будет. (если вы конечно не на версиях до 9.6)
...
Рейтинг: 0 / 0
09.07.2020, 21:47
    #39977906
О-О-О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большие таблицы и vacuum/autovacuum
flashgun,
Я бы пошел другим путем.
Посмотрел бы сколько занимает чистая таблица, сколько занимает через неделю/месяц. и тогда бы уже думал.

Лично я очень активно мучаю таблицы и они вырастают раз в 50, но я делаю в конце кода перестройку таблицы.
Так же, по умолчанию, все таблицы создаются с наполнением (FilFactor) то ли 70, то ли 80%.
Можете поставить 100%, тогда пустого места не будет (таблицы пухнуть не будут), но при этом есть шанс, что снизится производительность (они будут слишком перемешаны).
Тут на помощь придет Cluster table по индексу. но в вашем случае что то трудно советовать - слишком много строк.
=======
Оператор CLUSTER указывает PostgreSQL кластеризовать таблицу, заданную параметром имя_таблицы, согласно индексу, заданному параметром имя_индекса. Указанный индекс уже должен быть
определён в таблице имя_таблицы.
В результате кластеризации таблицы её содержимое физически переупорядочивается в зависимости от индекса. Кластеризация является одноразовой операцией: последующие изменения в таблице нарушают порядок кластеризации. Другими словами, система не пытается автоматически
сохранять порядок новых или изменённых строк в соответствии с индексом. (Если такое желание
возникает, можно периодически повторять кластеризацию, выполняя команду снова. Кроме того,
если для заданной таблицы установить параметр FILLFACTOR меньше 100%, это может помочь сохранить порядок кластеризации при изменениях, так как изменяемые строки будут помещаться в
ту же страницу, если в ней достаточно места.)
.
...
Рейтинг: 0 / 0
10.07.2020, 14:29
    #39978152
flashgun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большие таблицы и vacuum/autovacuum
Спасибо, коллеги!

Хорошо, а если у меня таблица, которая партиционирована по месяцу-году, и я понимаю, что изменений в старые части вноситься уже не будут. Есть ли смысл поменять ей fillfactor и перестроить все индексы?
...
Рейтинг: 0 / 0
10.07.2020, 15:48
    #39978205
mefman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большие таблицы и vacuum/autovacuum
flashgun
Спасибо, коллеги!

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

большого смысла нет. это очень уж тонкий тюнинг.
...
Рейтинг: 0 / 0
10.07.2020, 16:07
    #39978216
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большие таблицы и vacuum/autovacuum
О-О-О

Так же, по умолчанию, все таблицы создаются с наполнением (FilFactor) то ли 70, то ли 80%.


Откуда такая странная информация? Никогда такого не было. 100% по умолчанию.
...
Рейтинг: 0 / 0
11.07.2020, 23:59
    #39978525
flashgun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большие таблицы и vacuum/autovacuum
Супер, спасибо!

Я увеличил checkpoint_timeout до 30 минут, max_wal_size до 30 гигабайт и checkpoint_completion_target до 0,93 согласно рекомендациям от https://www.2ndquadrant.com/en/blog/basics-of-tuning-checkpoints/ -- у меня с ними просто удивительно сошлись цифры.

И теперь вопрос: на в точности такой же сервер непрерывно идёт потоковая репликация. Я правильно понимаю, что на этом stand-by нет смысла возиться с настройкой автовакуума, но зато есть смысл изменить параметры про чекпоинты, как и выше по образцу?
...
Рейтинг: 0 / 0
23.07.2020, 16:54
    #39983235
Megabyte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большие таблицы и vacuum/autovacuum
Необходимо менять настройки autovacuum_vacuum_scale_factor, autovacuum_analyze_scale_factor, опционально autovacuum_max_workers.
По дефолту автовакуум работает слишком редко.
...
Рейтинг: 0 / 0
26.07.2020, 14:56
    #39984081
flashgun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большие таблицы и vacuum/autovacuum
Спасибо, автовакуум разогнался в несколько раз! Нагрузка на машину выросла, но скорость выполнения запросов при этом улучшилась. Теперь возникла другая проблема, чтобы не мешать, спрошу в другой теме.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Большие таблицы и vacuum/autovacuum / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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