PostgreSQL template0 / template1 지우면 안 되는 이유

PostgreSQL 서버를 설치하고 최초에 initdb로 데이터베이스 클러스터를 초기화하면 디폴트로 postgres, template0, template1라는 3개의 데이터베이스가 생성된다.

성격이 깔끔하다보면 postgresql을 사용하다 “이 데이터베이스는 쓰지도 않는데 그 지워버릴까”하는 충동이 생길 수도 있는데 그러면 안 된다. 다 제 역할이 있는 데이터베이스다.

template0, template1

두 데이터베이스는 이름부터 템플릿1, 템플릿2인데 실제로 postgresql 데이터베이스의 템플릿의 역할을 한다.

template1

postgresql에서는 새로운 데이터베이스를 생성하면 디폴트로 template1 데이터베이스를 복사해서 생성한다. 데이터베이스 생성의 기준이 되는 템플릿 데이터베이스다.

그래서 template1을 삭제하면 신규 데이터베이스 생성이 안 된다.

template1은 상속의 기능을 수행한다. 예를 들어 template1에 새로운 테이블을 생성하면 template1을 복사해서 생성한 다른 데이터베이스에도 그 테이블이 생성된다.

이 말은 postgresql에서 생성하는 모든 데이터베이스에 공통으로 필요한 요소들을 template1에 한 번만 작업하면 된다는 의미다. 이런 식으로 활용 할 수도 있는 데이터베이스다.

template0

template0은 template1과는 달리 최초 설치 상태의 구성을 유지하는 템플릿이다. 때문에 수정되어서는 안 된다.

template1의 장점이 분명 있지만 다른 데이터베이스의 영향을 받지 않는 독립적인 데이터베이스를 만들고 싶을 수도 있다. 이럴 땐

CREATE DATABASE new_database TEMPLATE template0;

처럼 template0으로 데이터베이스를 만든다.

관련 글

댓글 남기기