You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: dba/DBA.md
+59Lines changed: 59 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -546,6 +546,13 @@ SELECT pg_reload_conf();
546
546
547
547
<b>Выполнение всех описанных выше периодических задач обслуживания берет на себя фоновый процесс автоочистки (autovacuum).</b>
548
548
549
+
Очистки требуют объекты, в которых накопилось значительное количество ненужных ("мертвых") версий строк. Очищаются также объекты, в которые с момента прошлой очистки было вставлено значительное количество новых строк. Это важно для таблиц, в которые данные только вставляются: их тоже необходимо очищать, чтобы обновить карту видимости и заморозить старые версии.
550
+
551
+
В случае необходимости можно настроить параметры очистки на уровне отдельных таблиц с помощью параметров хранения:
552
+
```sql
553
+
CREATE TABLE ... WITH (параметр=значение);
554
+
```
555
+
549
556
В системе постоянно присутствует процесс `autovacuum launcher`, который планирует работу очистки и запускает необходимое число рабочих процессов `autovacuum worker`, работающих параллельно. Очистка работает постранично, не приводя к блокировкам других транзакций, хотя и создает нагрузку на подсистему ввода-вывода.
550
557
551
558
Автоматическая очистка перестанет работать при отключении любого из двух параметров `autovacuum` или `track_counts`. Может ошибочно показаться, что отключение способно увеличить производительность системы за счет исключения "лишних" операций ввода-вывода. На самом деле отказ от очистки влечет за собой последствия: неконтролируемое разрастание файлов, замедление запросов и риск аварийной остановки сервера. В конечном итоге это приведет к полному параличу системы.
@@ -570,6 +577,58 @@ FROM pg_stat_activity
570
577
WHERE backend_type ='autovacuum launcher';
571
578
```
572
579
580
+
Представление, показывающее, нужна ли таблице очистка:
581
+
```sql
582
+
CREATEVIEWneeded_vacuumAS
583
+
WITH params AS (
584
+
SELECT (SELECT setting::INT
585
+
FROM pg_settings
586
+
WHERE name ='autovacuum_vacuum_threshold') AS vacuum_threshold,
587
+
(SELECT setting::FLOAT
588
+
FROM pg_settings
589
+
WHERE name ='autovacuum_vacuum_scale_factor') AS vacuum_scale_factor
0 commit comments