Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 автовакуум огромной таблицы  [new]
Уткъ
Member

Откуда:
Сообщений: 202
Добрый день.

Есть огромная таблица.

Примерно 500Гб размером и 2 млрд строк.

Что-то мне подсказывает, что автовакуум по ней плохо работает (стоит 0.02).

Т.е. пока 40 млн строк не измениться, она не вакуумирутеся.


Подскажите пожалуйста два вопроса:

1) Какие рекомендации по автовакууму для таких таблиц?

2) хотапдэйты в таком случае работают и как это проверить?
7 июн 21, 11:57    [22332174]     Ответить | Цитировать Сообщить модератору
 Re: автовакуум огромной таблицы  [new]
mefman
Member

Откуда:
Сообщений: 3470
Уткъ
Добрый день.

Есть огромная таблица.

Примерно 500Гб размером и 2 млрд строк.

Что-то мне подсказывает, что автовакуум по ней плохо работает (стоит 0.02).

Т.е. пока 40 млн строк не измениться, она не вакуумирутеся.


Подскажите пожалуйста два вопроса:

1) Какие рекомендации по автовакууму для таких таблиц?

2) хотапдэйты в таком случае работают и как это проверить?

  • Партишнинг
  • Настройка индивидуального автовакуума для таблицы
7 июн 21, 12:13    [22332184]     Ответить | Цитировать Сообщить модератору
 Re: автовакуум огромной таблицы  [new]
Уткъ
Member

Откуда:
Сообщений: 202
mefman
Уткъ
Добрый день.

Есть огромная таблица.

Примерно 500Гб размером и 2 млрд строк.

Что-то мне подсказывает, что автовакуум по ней плохо работает (стоит 0.02).

Т.е. пока 40 млн строк не измениться, она не вакуумирутеся.


Подскажите пожалуйста два вопроса:

1) Какие рекомендации по автовакууму для таких таблиц?

2) хотапдэйты в таком случае работают и как это проверить?

  • Партишнинг
  • Настройка индивидуального автовакуума для таблицы

Партицирование не рассматриваем.


Ну понятно что индивидуально, но какие приблизительно значения?

я так понимаю что очень маленькие, типа 0.00001, да?
7 июн 21, 12:29    [22332204]     Ответить | Цитировать Сообщить модератору
 Re: автовакуум огромной таблицы  [new]
mefman
Member

Откуда:
Сообщений: 3470
Уткъ
mefman
пропущено...

  • Партишнинг
  • Настройка индивидуального автовакуума для таблицы

Партицирование не рассматриваем.


Ну понятно что индивидуально, но какие приблизительно значения?

я так понимаю что очень маленькие, типа 0.00001, да?

не обязательно в % - можно в строках (autovacuum_vacuum_threshold)
7 июн 21, 12:45    [22332216]     Ответить | Цитировать Сообщить модератору
 Re: автовакуум огромной таблицы  [new]
mefman
Member

Откуда:
Сообщений: 3470
см. Per-table Throttling тут
7 июн 21, 13:15    [22332244]     Ответить | Цитировать Сообщить модератору
 Re: автовакуум огромной таблицы  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4785
Уткъ,

Вы реально думаете что autovacuum бесплатный и лёгкий для сервера?
Он не просто же так сделан с консервативными параметрами.
Частый (или постоянный) autovacuum на 500GB таблицы вам очень сильно пригрузит сервер по дискам и записи wal.

1) Какие рекомендации по автовакууму для таких таблиц?
autovacum_vacuum_scale_factor меньше чем 0.05 по большой таблице тупо вредно.
0.1 вполне достаточный консервативно настроенный параметр.

2) хотапдэйты в таком случае работают и как это проверить?
работают но местами хуже хотя конечно смотря какой профиль нагрузки на базу
что там с hot видно по pg_stat_user_tables по соотношению n_tup_upd и n_tup_hot_upd

Рекомендации - не создавать таких таблиц.
Особенно если там активная запись (update) в первые гигабайты свежих данных и терабайт почти readonly архива в одной таблице.
В такой ситуации НЕ ВОЗМОЖНО обеспечить разумную работу таблицы.
Так что системно это партиционированием решается.

Если же в терабайтную таблицу запись более менее случайно идет - оно будет работать относительно разумно
Но в любом случае таблица больше 100GB - показание к партиционированию.


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
7 июн 21, 16:15    [22332401]     Ответить | Цитировать Сообщить модератору
 Re: автовакуум огромной таблицы  [new]
Уткъ
Member

Откуда:
Сообщений: 202
Maxim Boguk

2) хотапдэйты в таком случае работают и как это проверить?
работают но местами хуже хотя конечно смотря какой профиль нагрузки на базу
что там с hot видно по pg_stat_user_tables по соотношению n_tup_upd и n_tup_hot_upd



Посмотрел, это отношение 0.005, т.е. меньше 1 %

Можно как-то его улучшить?


По нагрузке на таблицу,

60% - insert
20% - update
20% - delete
7 июн 21, 17:15    [22332440]     Ответить | Цитировать Сообщить модератору
 Re: автовакуум огромной таблицы  [new]
Уткъ
Member

Откуда:
Сообщений: 202
mefman
см. Per-table Throttling тут


Спасибо.

Думаю как раз персонально для таблицы autovacuum_vacuum_threshold сделать.
7 июн 21, 17:17    [22332441]     Ответить | Цитировать Сообщить модератору
 Re: автовакуум огромной таблицы  [new]
Уткъ
Member

Откуда:
Сообщений: 202
Maxim Boguk

Частый (или постоянный) autovacuum на 500GB таблицы вам очень сильно пригрузит сервер по дискам и записи wal.


Максим, а почему автовакуум грузит WAL ?

Первый раз про это слышу...

И сколько примерно ему требуется от объема данных таблицы?
7 июн 21, 17:18    [22332442]     Ответить | Цитировать Сообщить модератору
 Re: автовакуум огромной таблицы  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4785
Уткъ
Maxim Boguk

2) хотапдэйты в таком случае работают и как это проверить?
работают но местами хуже хотя конечно смотря какой профиль нагрузки на базу
что там с hot видно по pg_stat_user_tables по соотношению n_tup_upd и n_tup_hot_upd



Посмотрел, это отношение 0.005, т.е. меньше 1 %

Можно как-то его улучшить?


По нагрузке на таблицу,

60% - insert
20% - update
20% - delete


если меньше 1% это уже не к autovacuum вопрос
а к вашим update и индексам.

Если update меняет значение хоть одного поля указанного хоть в одном индексе на таблице - как HOT update он уже не может быть сделан.
И надо смотреть что за индексы у вас и что за update.
Наиболее распостранненный способ ломать HOT это поле типа mtime меняемое при каждом update и индекс по нему.



--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
7 июн 21, 17:19    [22332443]     Ответить | Цитировать Сообщить модератору
 Re: автовакуум огромной таблицы  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4785
Уткъ
Maxim Boguk

Частый (или постоянный) autovacuum на 500GB таблицы вам очень сильно пригрузит сервер по дискам и записи wal.


Максим, а почему автовакуум грузит WAL ?

Первый раз про это слышу...

И сколько примерно ему требуется от объема данных таблицы?


Так vacuum пишет и в таблицу и в индексы это его задача собственно.
И как любая запись она через wal идет.
Требуется - ну смотря сколько страниц таблицы и индексов надо будет менять.
В пределе с учетом full page writes легко можно получить в размер таблицы с индексами (а при невезении если походу vacuum будут checkpoints делаться так и превысить его в пару раз).
Из моей практике на более менее активных базах зачастую больше 50% всего wal потока генерируется autovacuum.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
7 июн 21, 18:18    [22332482]     Ответить | Цитировать Сообщить модератору
 Re: автовакуум огромной таблицы  [new]
Уткъ
Member

Откуда:
Сообщений: 202
Maxim Boguk
Уткъ
пропущено...


Максим, а почему автовакуум грузит WAL ?

Первый раз про это слышу...

И сколько примерно ему требуется от объема данных таблицы?


Так vacuum пишет и в таблицу и в индексы это его задача собственно.
И как любая запись она через wal идет.
Требуется - ну смотря сколько страниц таблицы и индексов надо будет менять.
В пределе с учетом full page writes легко можно получить в размер таблицы с индексами (а при невезении если походу vacuum будут checkpoints делаться так и превысить его в пару раз).
Из моей практике на более менее активных базах зачастую больше 50% всего wal потока генерируется autovacuum.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru



Максим, благодарю за ответ.

Вы меня сильно напугали :(



Вот что уточнить хотел, вот начался автовакуум огромной таблицы и идет он, к примеру 5 часов.

Все эти 5 часов будут WAL копиться или они будут очищаться, как обычно?

автовакуум ведь прерывается, "засыпает" или он прям все от начала до конца в одной транзакции и вал не отпускает...

По объему вы хорошо объяснили, а по рассасыванию очень надеюсь что не все так страшно (((

пользуюсь вашим перл скриптов по компатизации таблиц - отличная штука!
9 июн 21, 11:30    [22333187]     Ответить | Цитировать Сообщить модератору
 Re: автовакуум огромной таблицы  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4785
Уткъ
Maxim Boguk
пропущено...


Так vacuum пишет и в таблицу и в индексы это его задача собственно.
И как любая запись она через wal идет.
Требуется - ну смотря сколько страниц таблицы и индексов надо будет менять.
В пределе с учетом full page writes легко можно получить в размер таблицы с индексами (а при невезении если походу vacuum будут checkpoints делаться так и превысить его в пару раз).
Из моей практике на более менее активных базах зачастую больше 50% всего wal потока генерируется autovacuum.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru



Максим, благодарю за ответ.

Вы меня сильно напугали :(



Вот что уточнить хотел, вот начался автовакуум огромной таблицы и идет он, к примеру 5 часов.

Все эти 5 часов будут WAL копиться или они будут очищаться, как обычно?

автовакуум ведь прерывается, "засыпает" или он прям все от начала до конца в одной транзакции и вал не отпускает...

По объему вы хорошо объяснили, а по рассасыванию очень надеюсь что не все так страшно (((

пользуюсь вашим перл скриптов по компатизации таблиц - отличная штука!


Будет очищаться в шатном порядке.
А так да wal'a vacuum по большой таблице может крайне немало написать.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
9 июн 21, 11:40    [22333191]     Ответить | Цитировать Сообщить модератору
 Re: автовакуум огромной таблицы  [new]
Уткъ
Member

Откуда:
Сообщений: 202
Maxim Boguk
Уткъ
пропущено...



Максим, благодарю за ответ.

Вы меня сильно напугали :(



Вот что уточнить хотел, вот начался автовакуум огромной таблицы и идет он, к примеру 5 часов.

Все эти 5 часов будут WAL копиться или они будут очищаться, как обычно?

автовакуум ведь прерывается, "засыпает" или он прям все от начала до конца в одной транзакции и вал не отпускает...

По объему вы хорошо объяснили, а по рассасыванию очень надеюсь что не все так страшно (((

пользуюсь вашим перл скриптов по компатизации таблиц - отличная штука!


Будет очищаться в шатном порядке.
А так да wal'a vacuum по большой таблице может крайне немало написать.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru


Тогда не так страшнно!

Большое спасибо!
9 июн 21, 11:42    [22333192]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить