화요일, 1월 19, 2021

[유튜브 방송] (즐겁게 배우는 SQL #36) 데이터를 정의하자 - 청소(Vacuum)

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 36편을 공개해드리겠다. 36편은 테이블 청소 방법을 소개한다.

2021년 1월 19일자 [즐겁게 배우는 SQL #36] 데이터를 정의하자 - 청소(Vacuum) 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 SQLite에서 청소(Vacuum)가 필요한 이유
  • 04:55 VACUUM 명령과 pragma를 사용한 VACUUM 방식 지정
  • 05:35 VACUUM INTO 살펴보기

원본 학습자료는 SQLite VACUUM을 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: SQLite에서 청소(Vacuum)가 필요한 이유
    1. DROP이나 DELETE 등으로 자료를 삭제하더라도 데이터베이스 파일 크기는 그대로 --> 향후 사용을 위해 확보된 상태로 유지
    2. INSERT/DELETE 등으로 데이터를 삭제하면, 색인과 테이블이 조각화되는 상황이 발생
    3. 이런 문제점을 보완하기 위해 VACUUM을 도입(비고: PostgreSQL)
    4. 주의: VACUUM은 임시 데이터베이스 파일을 만들고 조각모음을 수행하고 다시 원본 데이터베이스 파일에 반영하므로 실시간성이 떨어짐
    5. 큰 테이블이나 색인을 데이터베이스에서 삭제하고 나면 수작업으로 VACUUM을 실행할 필요가 있음
    6. 주의: 3.9.2 버전에서 main 데이터베이스에만 VACUUM 명령을 실행할 수 있음
    7. 참고: SQLite는 자동으로 VACUUM 명령을 수행할 수 있지만, 제약으로 인해 수동으로 돌리는 편이 바람직함
  • 단계 2: VACUUM 명령과 pragma를 사용한 VACUUM 방식 지정
    1. SQL> VACUUM; # 수동으로 VACUUM
    2. SQL> PRAGMA auto_vacuum = FULL; # 전체
    3. SQL> PRAGMA auto_vacuum = INCREMENTAL; # 증분
    4. SQL> PRAGMA auto_vacuum = NONE; # 하지 않음
  • 단계 3: VACUUM INTO 살펴보기
    1. SQL> VACUUM main INTO 'c:\sqlite\db\chinook_backup.db';
EOB

댓글 없음:

댓글 쓰기