данных?
Удалять что то это очень больно и очень медленно поэтому пг не удаляет а оставляет как есть, когда дисковое место кончилось приходит админ и запускает vacuum, не так?
ага в 3 часа ночи. бд встает раком и будится админ почистить место
Мониторинг наше все
Не вакуум, а вакуум фулл. Который не запускается, потому что нет места на диске.
мониторинг сработал пораньше в 2 часа ночи, БД не упала, все равно херня какая-то :)
Читайте документацию и курсы АБД от ПостгресПро. Там всё есть в удобоваримом и понятном виде.
Вообще не так. Вакуум чистит версии данных которые никакая транзакция уже не увидит. Освободившееся место переиспользуется
Я посмотрел все три DBA. Знаю что есть. Не знаю, кто и зачем придумал.
Я вот не знаю, что непонятно в этих двух абзацах из документации (https://postgrespro.ru/docs/postgresql/14/routine-vacuuming) , для понять, ЗАЧЕМ: В PostgreSQL команды UPDATE или DELETE не вызывают немедленного удаления старой версии изменяемых строк. Этот подход необходим для реализации эффективного многоверсионного управления конкурентным доступом (MVCC, см. Главу 13): версия строки не должна удаляться до тех пор, пока она остаётся потенциально видимой для других транзакций. Однако в конце концов устаревшая или удалённая версия строки оказывается не нужна ни одной из транзакций. После этого занимаемое ей место должно быть освобождено и может быть отдано новым строкам, во избежание неограниченного роста потребности в дисковом пространстве. Это происходит при выполнении команды VACUUM. Обычная форма VACUUM удаляет неиспользуемые версии строк в таблицах и индексах и помечает пространство свободным для дальнейшего использования. Однако это дисковое пространство не возвращается операционной системе, кроме особого случая, когда полностью освобождаются одна или несколько страниц в конце таблицы и можно легко получить исключительную блокировку таблицы. Команда VACUUM FULL, напротив, кардинально сжимает таблицы, записывая абсолютно новую версию файла таблицы без неиспользуемого пространства. Это минимизирует размер таблицы, однако может занять много времени. Кроме того, для этого требуется больше места на диске для записи новой копии таблицы до завершения операции. Написано по-русски. Понятно.
Странно, почему в Oracle Database американцы это не сделали?
Потому что oracle - это oracle, а постгрес, это постгрес. ВНЕЗАПНО!
Я когда-то разбирал отличия: https://postgrespro.ru/blog/pgsql/17758
MVCC придумал наш бывший соотечественник Вадим Михеев из Красноярска, он был одним из первых core-разработчиков http://www.sai.msu.su/~megera/postgres/mvcc.html
Обсуждают сегодня