2. DBMS이야기/01. PostgreSQL

VACUUM vs VACUUM FULL

OSSW(Open Source System SoftWare 2014. 11. 17. 22:06

 1. VACUUM

 

1

1

1

2

2

2

3

(3)

 

4

4

4

5

(5)

 

6

6

6

                             3, 5를 삭제하고 난 후                             VACUUM 이 후

 

 

위에 보이는 것은 블록의 data 이다.

delete가 발생하는 경우, 괄호 안의 값처럼 data가 지워지지 않은 체 flag 값만 변경되어

해당 블록은 사용할 수 없는 공간으로 남게 된다.

이 경우, VACUUM 명령을 통해 delete flag가 있는 data를 영구히 지워버림으로써 해당 블록을 사용할 수 있는 공간으로 비워주게 된다.

VACUUM은 table의 Lock을 걸지 않으므로 운영 중에도 사용이 가능하다.


2. VACUUM FULL

 

1

1

 

1

 

1

2

2

2

2

3

(3)

4

4

4

4

6

6

5

(5)

#1 

 

6

6

 

                      3, 5를 삭제                                                                 VACUUM FULL

 

 

VACUUM FULL을 하게 되면 대상 Table은 다른 곳에 data를 copy하게 됨 (#1)
그리고 나서 기존 table을 클리어 하고, 기존 data를 insert하게 된다. (data compacting)
VACUUM FULL은 online 중에는 사용할 수 없다.
table Lock을 유발시키게 된다.

 

posted by. 신기철 (11.14)