Найти в Дзене
Postgres DBA

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

Изменение настроек autovacuum для тестовой таблицы pgbench_accounts: autovacuum_vacuum_scale_factor = 0 autovacuum_vacuum_threshold = 1000 autovacuum_analyze_scale_factor = 0 autovacuum_analyze_threshold = 1000 autovacuum_vacuum_insert_scale_factor = 0 autovacuum_vacuum_insert_threshold = 1000 autovacuum_vacuum_cost_delay = 1 autovacuum_vacuum_cost_limit = 2000 Уменьшение значения параметра fillfactor для тестовых таблиц ALTER TABLE pgbench_accounts SET (fillfactor = 50); ALTER TABLE pgbench_tellers SET (fillfactor = 50); ALTER TABLE pgbench_branches SET (fillfactor = 50); VACUUM FULL pgbench_branches ; VACUUM FULL pgbench_tellers ; VACUUM FULL pgbench_accounts ; Эксперимент-2 Эксперимент-3 Количество запусков autovacuum: 53 / 548 Доля HOT UPDATE для таблицы pgbench_accounts: 99.04% / 100% Эксперимент-2 Эксперимент-3 Относительное изменение расширенной статистики очистки в эксперименте-3 по сравнению с экспериментом-2: Эксперимент-2 Эксперимент-3 Относительное изменение расширенной ст
Оглавление

Начало

Сравнение экспериментов 2-3 : Влияние уменьшения fillfactor до 50

Эксперимент-2 : autovacuum tuning

Изменение настроек autovacuum для тестовой таблицы pgbench_accounts:

autovacuum_vacuum_scale_factor = 0
autovacuum_vacuum_threshold = 1000
autovacuum_analyze_scale_factor = 0
autovacuum_analyze_threshold = 1000
autovacuum_vacuum_insert_scale_factor = 0
autovacuum_vacuum_insert_threshold = 1000
autovacuum_vacuum_cost_delay = 1
autovacuum_vacuum_cost_limit = 2000

Эксперимент-3 : fillfactor = 50

Уменьшение значения параметра fillfactor для тестовых таблиц

ALTER TABLE pgbench_accounts SET (fillfactor = 50);
ALTER TABLE pgbench_tellers SET (fillfactor = 50);
ALTER TABLE pgbench_branches SET (fillfactor = 50);
VACUUM FULL pgbench_branches ;
VACUUM FULL pgbench_tellers ;
VACUUM FULL pgbench_accounts ;

Операционная скорость

Ось X - точка наблюдения .Ось Y - операционная скорость.
Ось X - точка наблюдения .Ось Y - операционная скорость.

Операционная скорость за весь период теста

  • Средняя относительная разница операционной скорости в экспериментах 2 и 3 составила : -3%

Операционная скорость при высокой нагрузке ( до 18 соединений)

  • Средняя относительная разница операционной скорости в экспериментах 2 и 3 составила : 6%

Операционная скорость при повышенной нагрузке ( свыше 18 соединений)

  • Средняя относительная разница операционной скорости в экспериментах 2 и 3 составила : 2%

Статистика autovacuum - Top tables by updated/deleted tuples

Эксперимент-2

-3

Эксперимент-3

-4

Количество запусков autovacuum: 53 / 548

Доля HOT UPDATE для таблицы pgbench_accounts: 99.04% / 100%

Статистика autovacuum - Top tables by vacuum time spent

Эксперимент-2

-5

Эксперимент-3

-6
-7

Относительное изменение расширенной статистики очистки в эксперименте-3 по сравнению с экспериментом-2:

  • Total vacuum time Общее время, затраченное на очистку этой таблицы : -23,81%
  • Delay vacuum time Время простоя в точке задержки при выполнении операций очистки для этой таблицы : -27,99%
  • Read I/O time Время, затраченное операциями очистки для этой таблицы на чтение блоков БД : -19,61%
  • Write I/O time Время, затраченное операциями очистки для этой таблицы на запись блоков БД: -38,04%
  • User CPU time Время использования процессора в пользовательском режиме при очистке таблиц этой БД: -39,32%
  • System CPU time Время использования процессора в режиме ядра при очистке таблиц этой БД : -28,27%
  • Total fetched Общее количество блоков БД, полученных операциями очистки, выполненными для этой таблицы : -27,67%
  • Heap fetched Общее количество блоков, полученных из этой таблицы операциями очистки, выполненными для неё: -27,41%
  • Scanned Количество страниц, к которым обращались операции очистки, выполненные для этой таблицы: -28,15%

Статистика autovacuum -Top tables by dead tuples vacuum left

Эксперимент-2

-8

Эксперимент-3

-9

Относительное изменение расширенной статистики очистки в эксперименте-3 по сравнению с экспериментом-2:

  • Dead tuples left Общее количество «мёртвых» кортежей, оставленных операциями очистки в этой таблице из-за видимости этих кортежей в транзакциях : 0.46%
  • Dead tuples deleted Общее количество «мёртвых» кортежей, удалённых операциями очистки из этой таблицы : 68.06%
  • %Eff Эффективность очистки, оцениваемая по количеству удалённых кортежей. Это процент «мёртвых» кортежей, удалённых из этой таблицы, от всех «мёртвых» кортежей, подлежащих удалению из этой таблицы: 11.82%

Статистика autovacuum -Top tables by dead tuples ratio

Эксперимент-2

-10

Эксперимент-3

-11
  • Live Оценочное количество «живых» строк : практически не изменилось
  • Dead Оценочное количество «мёртвых» строк : 201.75%
  • %Dead Процент «мёртвых» строк среди всех строк таблицы : 0.91%
  • Size Размер таблицы : 95.14%