Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
09.07.2020, 18:08
|
|||
---|---|---|---|
|
|||
Большие таблицы и vacuum/autovacuum |
|||
#18+
Добрый день! Мой пет-проект в свободное от работы время плавно растёт, объём базы 350+ гигабайт, и три особенно большие таблицы, в 310, 350 и 110 млн строк начинают требовать от меня регулярного внимания. Две партиционированы на 16 частей по хешу, одна по году-месяцу. Во все таблицы идут insert/update. Примерно раз в месяц я вижу, что они как-то неприлично разрослись, тогда я вручную запускаю vacuum full, после чего всё опять летает. При этом все параметры autovacuum стоят в дефолте, сам процесс непрерывно что-то вакуумит, работа кипит. Но я понимаю, что некоторые таблицы можно вообще не трогать неделями, а некоторые надо вообще говоря чистить весьма регулярно. Короче, мне перестал нравиться автовакуум в том виде, в котором я наблюдаю его работу сейчас. Перед тем, как погрузить своё сознание в пучину изучения тонкостей его настройки, хочу посоветоваться. Не лучше ли будет для ряда больших таблиц отключить автовакуум вообще и написать набор костылей и подпорок, которые будут регулярно, в заданные мною окна, выполнять vacuum full? Не будет ли это "шагом назад"? Не слишком ли самонадеянно я посчитаю себя "умнее разработчиков постгрес", которые ни в коем случае не советуют отключать автовакуум? Отключать я его и не планирую. Маленькие таблицы -- да бог с ними. А вот большие лучше бы я делал сам, вручную. Согласны? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.07.2020, 18:35
|
|||
---|---|---|---|
Большие таблицы и vacuum/autovacuum |
|||
#18+
Настраивайте автовакуум на более активную работу. flashgun непрерывно что-то вакуумит, работа кипит Спит он непрерывно на дефолтных настройках, а не работает. То что вакуумить не нужно - автовакуум трогать и не будет. (если вы конечно не на версиях до 9.6) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.07.2020, 21:47
|
|||
---|---|---|---|
|
|||
Большие таблицы и vacuum/autovacuum |
|||
#18+
flashgun, Я бы пошел другим путем. Посмотрел бы сколько занимает чистая таблица, сколько занимает через неделю/месяц. и тогда бы уже думал. Лично я очень активно мучаю таблицы и они вырастают раз в 50, но я делаю в конце кода перестройку таблицы. Так же, по умолчанию, все таблицы создаются с наполнением (FilFactor) то ли 70, то ли 80%. Можете поставить 100%, тогда пустого места не будет (таблицы пухнуть не будут), но при этом есть шанс, что снизится производительность (они будут слишком перемешаны). Тут на помощь придет Cluster table по индексу. но в вашем случае что то трудно советовать - слишком много строк. ======= Оператор CLUSTER указывает PostgreSQL кластеризовать таблицу, заданную параметром имя_таблицы, согласно индексу, заданному параметром имя_индекса. Указанный индекс уже должен быть определён в таблице имя_таблицы. В результате кластеризации таблицы её содержимое физически переупорядочивается в зависимости от индекса. Кластеризация является одноразовой операцией: последующие изменения в таблице нарушают порядок кластеризации. Другими словами, система не пытается автоматически сохранять порядок новых или изменённых строк в соответствии с индексом. (Если такое желание возникает, можно периодически повторять кластеризацию, выполняя команду снова. Кроме того, если для заданной таблицы установить параметр FILLFACTOR меньше 100%, это может помочь сохранить порядок кластеризации при изменениях, так как изменяемые строки будут помещаться в ту же страницу, если в ней достаточно места.) . ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.07.2020, 14:29
|
|||
---|---|---|---|
|
|||
Большие таблицы и vacuum/autovacuum |
|||
#18+
Спасибо, коллеги! Хорошо, а если у меня таблица, которая партиционирована по месяцу-году, и я понимаю, что изменений в старые части вноситься уже не будут. Есть ли смысл поменять ей fillfactor и перестроить все индексы? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.07.2020, 15:48
|
|||
---|---|---|---|
Большие таблицы и vacuum/autovacuum |
|||
#18+
flashgun Спасибо, коллеги! Хорошо, а если у меня таблица, которая партиционирована по месяцу-году, и я понимаю, что изменений в старые части вноситься уже не будут. Есть ли смысл поменять ей fillfactor и перестроить все индексы? большого смысла нет. это очень уж тонкий тюнинг. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.07.2020, 16:07
|
|||
---|---|---|---|
|
|||
Большие таблицы и vacuum/autovacuum |
|||
#18+
О-О-О Так же, по умолчанию, все таблицы создаются с наполнением (FilFactor) то ли 70, то ли 80%. Откуда такая странная информация? Никогда такого не было. 100% по умолчанию. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.07.2020, 23:59
|
|||
---|---|---|---|
|
|||
Большие таблицы и vacuum/autovacuum |
|||
#18+
Супер, спасибо! Я увеличил checkpoint_timeout до 30 минут, max_wal_size до 30 гигабайт и checkpoint_completion_target до 0,93 согласно рекомендациям от https://www.2ndquadrant.com/en/blog/basics-of-tuning-checkpoints/ -- у меня с ними просто удивительно сошлись цифры. И теперь вопрос: на в точности такой же сервер непрерывно идёт потоковая репликация. Я правильно понимаю, что на этом stand-by нет смысла возиться с настройкой автовакуума, но зато есть смысл изменить параметры про чекпоинты, как и выше по образцу? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.07.2020, 16:54
|
|||
---|---|---|---|
Большие таблицы и vacuum/autovacuum |
|||
#18+
Необходимо менять настройки autovacuum_vacuum_scale_factor, autovacuum_analyze_scale_factor, опционально autovacuum_max_workers. По дефолту автовакуум работает слишком редко. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.07.2020, 14:56
|
|||
---|---|---|---|
|
|||
Большие таблицы и vacuum/autovacuum |
|||
#18+
Спасибо, автовакуум разогнался в несколько раз! Нагрузка на машину выросла, но скорость выполнения запросов при этом улучшилась. Теперь возникла другая проблема, чтобы не мешать, спрошу в другой теме. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=53&mobile=1&tid=1994560]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 156ms |
0 / 0 |