Всё, что влияет на работу СУБД - нужно считатьЗадачи экспериментаОценить степень влияния регулярного выполнения vacuum/analyze на производительность СУБД.Оценить степень влияния распухания таблицы на производительность СУБД.Реализация экспериментаВиртуальная машинаCPU = 1vendor_id : GenuineIntelcpu family : 6model : 85model name : Intel Xeon Processor (Skylake, IBRS, no TSX)RAMMem: 718MiРедакция/версия СУБДPostgres Pro (enterprise certified) 15.8.1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.4.1 20230605 (Red Soft 11.4.0-1), 64-bitКонфигурационные параметры СУБДshared_preload_libraries = 'pg_stat_statements'Остальные параметры: по умолчаниюОцениваемые результатыОбщее время выполнения (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 после каждой итерацииРис.1. Базовая нагрузкаТест без выполнения vacuum + analyze после каждой итерацииРис.2. Тест без vacuum+analyzeСравнение результатов с «Эталонный тест: vacuum + analyze после каждой итерации»Время выполнения теста — незначительно уменьшилосьОбъем обработанных разделяемых блоков — значительно увеличилсяПроизводительность — существенно уменьшиласьФрагментация 11%Рис.3. Фрагментация 11%Сравнение результатов с «Тест без выполнения vacuum + analyze после каждой итерации»Время выполнения теста — существенно увеличилосьОбъем обработанных разделяемых блоков — существенно увеличилсяПроизводительность — существенно уменьшиласьФрагментация 100%Рис.4. Фрагментация 100%Сравнение результатов с «Тест без выполнения vacuum + analyze после каждой итерации»Время выполнения теста — существенно увеличилосьОбъем обработанных разделяемых блоков — существенно увеличилсяПроизводительность — существенно уменьшиласьИтогиВыполнение vacuum+analyze после массовых изменений данных существенно увеличивает производительность СУБД, хотя общее время выполнения и несколько возрастает.Даже относительно небольшая фрагментация оказывает существенное влияние на производительность СУБД.Дальнейшее увеличение фрагментации не оказывает заметного влияния на производительность СУБД.Мониторить и оптимизировать надо не фрагментацию БД в целом, а фрагментацию наиболее часто используемых таблиц.