Задачи эксперимента
1) Оценить степень влияния регулярного выполнения vacuum/analyze на производительность СУБД.
2) Оценить степень влияния распухания таблицы на производительность СУБД.
Реализация эксперимента
Для краткости, конкретные значения параметров настройки вакуума и анализа, пока вынесены за рамки данной статьи.
Одна итерация теста состоит из транзакции select/insert/update/delete ( количество строк в таблицах ~1 000 000 ).
Количество итераций = 1000.
Оцениваемые параметры
-
Общее время выполнения ( total_exec_time представления pg_stat_statements)
-
Количество запросов ( calls представления pg_stat_statements )
-
Количество результирующих строк ( rows представления pg_stat_statements )
-
Общее число прочитанных разделяемых блоков ( shared_blks_read представления pg_stat_statements )
-
Общее число «загрязнённых» разделяемых блоков ( shared_blk_dirtied представления pg_stat_statements )
-
Общее число записанных разделяемых блоков ( shared_blk_written представления pg_stat_statements )
-
Количество транзакций ( xact_commit представления pg_stat_database )
-
Метрика производительности СУБД ( CPI )
Результаты эксперимента
Эталонный тест — vacuum + analyze после каждой итерации
Тест без выполнения vacuum + analyze после каждой итерации
Сравнение результатов с «Эталонный тест — vacuum + analyze после каждой итерации«
-
Время выполнения теста — незначительно уменьшилось
-
Объем обработанных разделяемых блоков — значительно увеличился
-
Производительность — существенно уменьшилась
Фрагментация 11%
Сравнение результатов с «Тест без выполнения vacuum + analyze после каждой итерации«
-
Время выполнения теста — существенно увеличилось
-
Объем обработанных разделяемых блоков — существенно увеличился
-
Производительность — существенно уменьшилась
Фрагментация 100%
Сравнение результатов с «Тест без выполнения vacuum + analyze после каждой итерации«
-
Время выполнения теста — существенно увеличилось
-
Объем обработанных разделяемых блоков — существенно увеличился
-
Производительность — существенно уменьшилась
Итоги
Выполнение vacuum+analyze после массовых изменений данных существенно увеличивает производительность СУБД, хотя общее время выполнения и несколько возрастает.
Даже относительно небольшая фрагментация оказывает существенное влияние на производительность СУБД.
Дальнейшее увеличение фрагментации не оказывает заметного влияния на производительность СУБД.
ссылка на оригинал статьи https://habr.com/ru/articles/845454/
Добавить комментарий