Open Source RDBMS - Seamless, Scalable, Stable and Free

한국어 | Login |Register

Versions available for this page: CUBRID 8.2.1 |  CUBRID 8.3.0 |  CUBRID 8.3.1 |  CUBRID 8.4.0 |  CUBRID 8.4.1 |  CUBRID 8.4.3 |  CUBRID 9.0.0 | 



데이터베이스 볼륨 구조

아래 그림은 CUBRID 데이터베이스 볼륨의 구조를 도식화한 구성도이다. 데이터베이스 볼륨을 크게 영구 볼륨, 임시 볼륨, 백업 볼륨으로 분류하고, 아래 구성도를 참고하여 각각에 속하는 볼륨 및 특징을 살펴보기로 한다.

volume.png

영구적 볼륨(Permanent Volume)

영구적 볼륨은 한번 생성되면 영구적으로 존재하는 데이터베이스 볼륨으로서, 볼륨 타입으로는 범용(generic), 데이터(data), 임시(temp), 인덱스(index), 제어(control), 활성 로그(active log), 보관 로그(archive log)가 있다.

범용 볼륨(Generic Volume)

사용자는 데이터베이스에 추가할 볼륨 타입을 데이터(data), 임시(temp), 인덱스(index) 중 하나의 용도로 지정하여 효율적으로 관리할 수 있는데, 별도로 데이터 용도를 지정하지 않는 경우에는 범용(generic) 볼륨으로 지정된다.

데이터 볼륨(Data Volume)

데이터 볼륨은 인스턴스, 테이블, 멀티미디어 데이터 등과 같은 데이터를 저장하기 위한 볼륨이다.

임시 볼륨(Temp Volume)

임시 볼륨은 질의 처리 및 정렬(sorting)을 수행할 때 일시적으로 사용되는 볼륨이다. 다만, 임시 볼륨은 저장 공간이 임시적으로 생성 및 소멸되는 볼륨이 아니라 영구적으로 공간을 확보한 영구 볼륨 중 하나로서, 데이터가 임시적으로 저장 및 소멸되는 것을 의미한다. 따라서, CUBRID가 재시작하면 임시 볼륨 공간 내의 데이터는 초기화되고, 이에 관해 로그 정보는 남기지 않는다.

인덱스 볼륨(Index Volume)

인덱스 볼륨은 신속한 질의 처리 또는 무결성 제약 조건(integrity constraints)의 신속한 검증을 위하여 인덱스 정보를 유지하는 볼륨이다.

제어 파일(Control File)

제어 파일은 데이터베이스 내 존재하는 볼륨의 정보, 백업 정보, 및 로그의 정보를 저장하는 파일이다.

  • 볼륨 정보 : 데이터베이스 내 모든 볼륨의 이름과 위치, 그리고 내부 볼륨 식별자를 포함하는 정보로서, 데이터베이스가 재시작될 때 CUBRID는 볼륨 정보 제어 파일을 판독하며, 새로운 데이터베이스 볼륨이 추가될 때에 새로운 엔트리를 볼륨 정보 제어 파일에 기록한다.
  • 백업 정보 : 정보 볼륨에 대한 모든 백업의 위치는 백업 정보 제어 파일에 기록된다. 이 제어 파일은 로그 파일이 관리되는 곳에 유지된다.
  • 로그 정보 : 모든 활성 로그와 보관 로그의 이름을 포함하며, 사용자는 로그 정보 제어 파일을 통해 보관 로그의 정보를 확인할 수 있다. 이러한 로그 정보 제어 파일은 로그 파일과 동일한 위치에서 생성 및 관리된다.

이와 같이 각각의 제어 파일은 데이터베이스 볼륨의 위치, 백업 정보, 로그 정보를 포함하며, 데이터베이스가 재시작하면서 읽는 파일이므로 사용자 임의로 변경해서는 안 된다.

활성 로그(Active Log)

활성 로그(active log)는 데이터베이스의 최근 변경 사항을 포함하는 로그이며, 데이터베이스에 문제가 발생하는 경우 활성 로그 및 보관 로그를 이용하여 고장 발생 전의 커밋된 시점으로 완전하게 데이터베이스를 복구할 수 있다.

보관 로그(Archive Log)

보관 로그는 최근의 변경 사항을 포함하고 있는 활성 로그(active log) 공간이 모두 사용된 후에 지속적으로 생성되는 로그를 보관하기 위한 볼륨이다. 영구적 임시 볼륨 공간이 소진된 후에 일시적 임시 볼륨이 이용되는 것처럼, 활성 로그 볼륨의 공간이 소진된 후에 비로소 보관 로그 볼륨이 이용된다. 일시적 임시 볼륨은 서버 프로세스가 종료될 때 자동 소멸하지만, 보관 로그 볼륨은 자동 소멸하지 않으므로 불필요한 보관 로그는 시스템의 설정에 의해 삭제되어야 한다는 차이점이 있다.

참고 보관 로그가 삭제될 수 있는 경우에 대한 자세한 내용은 보관 로그 관리를 참고한다.

백그라운드 보관 로그(Background Archive Log)

백그라운드 보관 로그(background archive log)는 백그라운드에서 로그 보관 작업(log archiving)을 수행할 때 사용하는 볼륨이다.

일시적 볼륨(Temporary Volume)

일시적 볼륨이란, 영구적 볼륨과 반대되는 의미이다. 즉, 사용자가 영구적 볼륨으로 지정한 공간을 초과하여 데이터가 축적되는 경우에만 일시적으로 마련되는 저장 공간을 일시적 볼륨이라 하며, 이는 서버 프로세스가 종료됨에 따라 소멸된다. 이처럼 일시적으로 생성 및 소멸되는 볼륨으로는 일시적 임시 볼륨(temporary temp volume)이 있다.

일시적 임시 볼륨(Temporary Temp Volume)

영구적 볼륨에 속하는 임시 볼륨은 영구적으로 공간을 확보하는 볼륨인 데 비해, 일시적 임시 볼륨(temporary temp volume)은 영구적 임시 볼륨(permanent temp volume)으로 지정된 공간 외에 추가 공간이 필요한 경우 시스템이 일시적으로 생성하는 임시 볼륨이다. 따라서 DBA가 데이터베이스 운영 상황을 고려하여 적절한 크기의 영구적 임시 볼륨을 추가하면 성능상 유리하다.

데이터베이스 생성 시에 DBA는 일시적 임시 볼륨이 생성될 수 있는 공간도 감안해야 한다. 일시적 임시 볼륨은 한 번 생성되면 데이터베이스를 재시작하기 전까지 유지되며, 한 번 늘어난 크기는 줄어들지 않는다. 일시적 임시 볼륨의 크기가 지나치게 커지면 데이터베이스를 재시작하여 일시적 임시볼륨이 자동으로 삭제되도록 하는 것이 좋다. 일시적 임시 볼륨을 수동으로 삭제해서는 안 된다.

일시적 임시 볼륨은 조인(join)이나 정렬이 수행하거나 인덱스를 생성할 때 필요한 디스크 공간을 확보하는 경우에 생성되며, 일시적 임시 볼륨을 생성하는 질의의 예로는 1) GROUP BYORDER BY가 포함된 질의 2) 부질의(subquery)가 포함된 질의, 3) 정렬-병합(sort-merge) 조인이 수행되는 질의, 4) CREATE INDEX 문장이 포함된 질의 등이 있다.

  • 일시적 임시 볼륨의 파일명 : CUBRID의 일시적 임시 볼륨의 파일명은 db_name_tnum 형식의 이름을 갖는다. 여기서 db_name은 데이터베이스 이름이고, num은 볼륨 식별자이다. 볼륨 식별자는 32766에서부터 1씩 감소한다.
  • 일시적 임시 볼륨의 크기 설정 : 일시적 임시 볼륨이 생성되는 개수는 트랜잭션 처리에 필요한 공간의 크기에 따라 시스템이 결정한다. 그러나, 일시적 임시 볼륨의 크기는 사용자가 시스템 파라미터 설정 파일(cubrid.conf)의 temp_file_max_size_in_pages 파라미터의 값을 설정함으로써 제한할 수 있다. 만약, temp_file_max_size_in_pages의 값이 0으로 설정되면 영구적 임시 볼륨이 소진되어도 일시적 임시 볼륨이 생성되지 않을 것이다.
  • 일시적 임시 볼륨의 저장 위치 설정 : 일시적 임시 볼륨은 기본적으로 첫 번째 데이터베이스 볼륨이 생성된 위치에 만들어진다. 그러나, 사용자가 temp_volume_path 파라미터 값을 설정하여 일시적 임시 볼륨이 저장될 다른 디렉터리를 지정할 수 있다.
  • 일시적 임시 볼륨의 삭제 : 일시적 임시 볼륨은 데이터베이스가 구동 중일 때만 일시적으로 존재하며, 서버가 운영 중일 때는 일시적 임시 볼륨을 삭제하면 안 된다. 데이터베이스 서버가 정상적으로 종료될 때 일시적 임시 볼륨이 삭제되고, 데이터베이스 서버가 비정상적으로 종료되면 서버가 재시작할 때 일시적 임시 볼륨이 삭제된다.
백업 볼륨

백업 볼륨은 데이터베이스에 대한 스냅샷으로서, 이러한 백업 볼륨과 로그 볼륨을 기반으로 특정 시점까지 발생한 트랜잭션을 복구할 수 있다.

사용자는 cubrid backupdb 유틸리티를 통해 데이터베이스 복구를 위해 필요한 모든 데이터를 복사할 수 있으며, 데이터베이스 환경 설정 파일(cubrid.conf)의 backup_volume_max_size_bytes 파라미터 값을 설정하여 백업 볼륨의 분할 크기를 조정할 수 있다.