2010-01-24 3 views

답변

28

MVCC을 사용하여 서로 트랜잭션을 격리하는 데이터베이스는 주기적으로 테이블을 스캔하여 오래된 행 복사본을 삭제해야합니다. MVCC에서는 행이 업데이트되거나 삭제 될 때 행의 이전 버전을 계속 볼 수있는 활성 트랜잭션이있을 수 있으므로 즉시 재사용 할 수 없습니다. 이 경우에 비용이 많이들 수 있는지 확인하는 대신 오래된 행이 관련성이 있다고 가정합니다. 공간을 회수하는 프로세스는 데이터베이스에 따라 자동 또는 명시 적으로 시작될 수있는 테이블이 제거 될 때까지 지연됩니다.

0

파일 시스템을 조각 모음하는 것은 매우 유사합니다. PGSQL docs에 대한 자세한 정보.

+2

조각 모음은 공간을 재생성하는 것이 아닙니다. 단편화를 줄이기 위해 데이터를 재정렬하는 것입니다. –

1

'vacuumdb'는 MySQL, sqlite 및 PostgreSQL에 있습니다. Postgres에서 vacuumdb는 삭제 된 행에 의해 점유 된 공간을 식별하고 나중에 사용할 수 있도록 카탈로그 화합니다. 'vacuum full'은보다 포괄적 인 검사를 수행하고 새로 생성 된 공간으로 레코드를 이동합니다.

관련 문제