Что значит пылесосить базу данных? - PullRequest
26 голосов
/ 24 января 2010

Как указывает эта ошибка в Firefox , что делает процесс очистки базы данных? Поддерживается ли эта операция всем современным программным обеспечением для баз данных или только определенными?

Ответы [ 4 ]

34 голосов
/ 24 января 2010

Базы данных, которые используют MVCC для изоляции транзакций друг от друга, должны периодически сканировать таблицы для удаления устаревших копий строк. В MVCC, когда строка обновляется или удаляется, она не может быть немедленно повторно использована, поскольку могут быть активные транзакции, которые все еще могут видеть старую версию строки. Вместо того, чтобы проверять, так ли это, что может быть довольно дорогостоящим, предполагается, что старые строки остаются актуальными. Процесс восстановления пространства откладывается до тех пор, пока таблица не будет очищена, что, в зависимости от базы данных, может быть инициировано автоматически или явно.

5 голосов
/ 24 января 2010

Это конкретно относится к вакуумной команде SQL lite. http://www.sqlite.org/lang_vacuum.html

Удаляет пространство, оставшееся из операторов DELETE.

1 голос
/ 02 апреля 2014

«вакуумная база данных» находится в MySQL, sqlite и PostgreSQL.В Postgres, вакуумная база данных идентифицирует пространство, занимаемое удаленными строками, и каталогизирует его для будущего использования.«Вакуум заполнен» делает более всестороннюю проверку и перемещает записи во вновь созданное пространство.

0 голосов
/ 24 января 2010

Это очень похоже на дефрагментацию файловой системы. Подробнее о PGSQL документах .

...