Влияние vacuum/analyze/bloat на производительность СУБД

от автора

Задачи эксперимента

1) Оценить степень влияния регулярного выполнения vacuum/analyze на производительность СУБД.

2) Оценить степень влияния распухания таблицы на производительность СУБД.

Реализация эксперимента

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

Одна итерация теста состоит из транзакции select/insert/update/delete ( количество строк в таблицах ~1 000 000 ).

Количество итераций = 1000.

Оцениваемые параметры

  1. Общее время выполнения ( total_exec_time представления pg_stat_statements)

  2. Количество запросов ( calls представления pg_stat_statements )

  3. Количество результирующих строк ( rows представления pg_stat_statements )

  4. Общее число прочитанных разделяемых блоков ( shared_blks_read представления pg_stat_statements )

  5. Общее число «загрязнённых» разделяемых блоков ( shared_blk_dirtied представления pg_stat_statements )

  6. Общее число записанных разделяемых блоков ( shared_blk_written представления pg_stat_statements )

  7. Количество транзакций ( xact_commit представления pg_stat_database )

  8. Метрика производительности СУБД ( CPI )

Результаты эксперимента

Эталонный тест — vacuum + analyze после каждой итерации

Рис.1. Базовая нагрузка

Рис.1. Базовая нагрузка

Тест без выполнения vacuum + analyze после каждой итерации

Рис.2. Тест без vacuum+analyze

Рис.2. Тест без vacuum+analyze

Сравнение результатов с «Эталонный тест — vacuum + analyze после каждой итерации«

  • Время выполнения теста — незначительно уменьшилось

  • Объем обработанных разделяемых блоков — значительно увеличился

  • Производительность — существенно уменьшилась

Фрагментация 11%

Рис.3. Фрагментация 11%

Рис.3. Фрагментация 11%

Сравнение результатов с «Тест без выполнения vacuum + analyze после каждой итерации«

  • Время выполнения теста — существенно увеличилось

  • Объем обработанных разделяемых блоков — существенно увеличился

  • Производительность — существенно уменьшилась

Фрагментация 100%

Рис.4. Фрагментация 100%

Рис.4. Фрагментация 100%

Сравнение результатов с «Тест без выполнения vacuum + analyze после каждой итерации«

  • Время выполнения теста — существенно увеличилось

  • Объем обработанных разделяемых блоков — существенно увеличился

  • Производительность — существенно уменьшилась

Итоги

Выполнение vacuum+analyze после массовых изменений данных существенно увеличивает производительность СУБД, хотя общее время выполнения и несколько возрастает.

Даже относительно небольшая фрагментация оказывает существенное влияние на производительность СУБД.

Дальнейшее увеличение фрагментации не оказывает заметного влияния на производительность СУБД.


ссылка на оригинал статьи https://habr.com/ru/articles/845454/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *