테이블스페이스 분류
테이블스페이스 분류#
Altibase가 제공하는 테이블스페이스는 아래 3가지 기준에 의해서 분류된다. 하나의 테이블스페이스는 아래에 분류된 다수의 속성들을 동시에 가질 수 있다.
-
저장 공간에 따른 분류
-
저장 내용에 따른 분류
-
생성 주체에 따른 분류
저장 공간에 따른 분류#
Altibase 테이블스페이스는 저장 공간에 따라 다음과 같이 분류된다.
-
메모리 상주 테이블스페이스
-
디스크 테이블스페이스
메모리 상주 테이블스페이스#
메모리 상주 테이블스페이스는 로깅 수행 여부 및 디스크 이미지 파일의 존재 여부에 따라 메모리 테이블스페이스와 휘발성 테이블스페이스로 구분된다.
메모리 테이블스페이스는 메모리 기반 객체를 저장하기 위한 테이블스페이스이다. 해당 테이블스페이스 내에 저장되는 모든 객체에 메모리 기반 데이터베이스 기술이 적용됨으로써, 사용자가 실시간으로 데이터에 접근할 수 있다. 그러나 메모리 테이블스페이스의 크기는 시스템의 사용 가능한 물리적 메모리 공간을 초과할 수 없다.
휘발성 테이블스페이스는 디스크 I/O 작업 없이 메모리 기반 객체를 저장하는 테이블스페이스이다. 해당 테이블스페이스 내에 저장되는 모든 객체에 메모리 기반 데이터베이스 기술과 부가적 기술이 적용됨으로써, 사용자가 디스크 I/O 작업 없이 실시간으로 데이터에 접근할 수 있다. 그러나 휘발성 테이블스페이스의 크기는 시스템의 사용 가능한 물리적 메모리 공간을 초과할 수 없고, 데이터베이스 서버 종료시 모든 휘발성 데이터 객체들은 사라진다.
디스크 테이블스페이스#
디스크 테이블스페이스는 디스크 기반 객체를 저장하기 위한 테이블스페이스이다. 데이터의 실시간 접근보다는 대용량 데이터를 관리하고 싶은 경우에 사용할 수 있는 테이블스페이스이다. 해당 테이블스페이스에 저장되는 객체들에 대한 접근은 디스크 입출력을 수반한다. 이러한 디스크 입출력 비용이 데이터 접근 시간의 대부분을 차지하기 때문에, 디스크 테이블스페이스는 디스크 입출력 비용을 줄이기 위해서 메모리 버퍼 공간을 사용한다.
저장 내용에 따른 분류#
테이블스페이스에 저장되는 내용에 따라 다음과 같이 분류된다.
-
딕셔너리 테이블스페이스 (Dictionary Tablespace)
-
언두 테이블스페이스 (Undo Tablespace)
-
임시 테이블스페이스 (Temporary Tablespace)
-
데이터 테이블스페이스 (Data Tablespace)
딕셔너리 테이블스페이스#
딕셔너리 테이블스페이스는 데이터베이스 시스템의 운영상 필요한 메타 데이터를 저장하기 위한 테이블스페이스다. 데이터베이스 생성 시 시스템에 의해서 생성되는 테이블스페이스이며, 데이터베이스 내에 하나만 존재한다. 사용자는 딕셔너리 테이블스페이스 내에 객체를 생성할 수 없으며, 시스템만이 메타 데이터 유지 관리를 위한 시스템 객체를 생성할 수 있다. 메타 데이터에 대한 빠른 접근을 위하여 딕셔너리 테이블스페이스는 메모리에 존재한다. 딕셔너리 테이블스페이스가 붕괴(crash)된 경우에는 전체 데이터베이스를 운영할 수 없다(백업 및 매체 복구를 이용하여 데이터베이스를 복구시켜야 한다).
언두 테이블스페이스#
언두 테이블스페이스는 디스크 객체에 대한 연산이 남긴 언두 이미지(undo image)를 저장하기 위한 테이블스페이스이다. Altibase의 동시성 제어는 MVCC(Multi-Version Concurency Control) 기법이기 때문에 변경 이전의 이미지를 저장할 공간이 필요하다. 이러한 이전 이미지가 언두 테이블스페이스에 저장된다.
언두 테이블스페이스는 시스템에 하나만 존재하며, 데이터베이스 내의 모든 디스크 테이블스페이스에 의해 공유된다. 따라서, 언두 테이블스페이스도 딕셔너리 테이블스페이스와 마찬가지로 시스템 운영상 필수적인 시스템 테이블스페이스이다. 테이블스페이스 단위의 백업이 가능하다.
TRANSACTION_SEGMENT_COUNT 프로퍼티의 설정값이 900을 초과할 경우 언두 테이블스페이스 데이터 파일과 동일한 위치에 txSegEntry.hdr 이라는 파일을 만들어 언두 테이블스페이스의 세그먼트 헤더 정보를 저장한다. Altibase 분산 데이터베이스 시스템에서 분산 트랜잭션 복구 시, 장애 발생 전 언두 테이블스페이스에 접근하려면 이 파일이 필요하므로 언두 테이블스페이스를 백업할 경우 세그먼트 헤더 정보 파일(txSegEntry.hdr)도 함께 백업해야 한다.
임시 테이블스페이스#
임시 테이블스페이스는 질의 수행중 생성되는 임시 결과를 저장하기 위한 테이블스페이스이다. 따라서, 트랜잭션이 종료하는 시점에 해당 질의가 남긴 임시 테이블스페이스 내의 모든 데이터들은 사라지게 된다.
이러한 종류의 테이블스페이스는 동시성 제어 및 회복을 위한 로깅 등을 하지 않아 빠른 저장 및 검색이 가능하다. 사용자가 임의로 임시 테이블스페이스를 생성할 수 있으며, 다수의 임시 테이블스페이스가 시스템 내에 존재할 수 있다. 임시 테이블스페이스의 백업은 지원되지 않는다.
데이터 테이블스페이스#
데이터 테이블스페이스는 사용자 정의 객체를 저장하기 위한 테이블스페이스이다. 다수의 데이터 테이블스페이스가 시스템 내에 존재할 수 있으며, 사용자는 테이블스페이스에 저장되는 데이터의 특성에 따라 메모리, 휘발성 또는 디스크 테이블스페이스로 생성할 수 있다.
생성 주체에 따른 분류#
Altibase의 테이블스페이스는 생성 주체에 따라 다음과 같이 분류된다.
-
시스템 테이블스페이스 (System Tablespace)
-
사용자 정의 테이블스페이스( User-defined Tablespace)
시스템 테이블스페이스#
시스템 테이블스페이스는 시스템 운영상 필요한 데이터들을 저장하기 위한 테이블스페이스이다. 시스템 딕셔너리 테이블스페이스, 시스템 언두 테이블스페이스, 시스템 데이터 테이블스페이스 및 시스템 임시 테이블스페이스가 이에 해당한다. 시스템 테이블스페이스는 데이터베이스 생성 시 만들어지며, 사용자가 명시적으로 테이블스페이스 삭제하거나 이름을 변경할 수 없다. 또한 테이블스페이스 단위의 백업과 매체 복구 수행이 가능하다.
사용자 정의 테이블스페이스#
사용자 정의 테이블스페이스는 사용자 정의 객체들의 내용을 저장하기 위한 테이블스페이스이다. 사용자 정의 테이블스페이스 내에 정의된 객체들의 메타 데이터는 딕셔너리 테이블스페이스에 저장된다. 사용자는 명시적으로 사용자 정의 테이블스페이스를 삭제하거나 이름을 변경할 수 있다. 또한 테이블스페이스 단위의 백업 및 복구 수행이 가능하다.
테이블스페이스 목록#
데이터베이스가 생성 시 다수의 테이블스페이스가 만들어진다. [표 6-2]와 같이 시스템 테이블스페이스, 언두 테이블스페이스, 임시 테이블스페이스, 그리고 사용자가 이용할 수 있는 기본적인 메모리 테이블스페이스와 디스크 테이블스페이스가 생성된다. 추가로 사용자가 'CREATE TABLESPACE'문으로 테이블스페이스들을 추가할 수 있다.
[표 6‑2] 테이블스페이스 목록
ID | 테이블스페이스 종류 | 저장 공간 | 테이블스페이스 이름 | 생성 시점 |
---|---|---|---|---|
0 | SYSTEM DICTIONARY TABLESPACE | 메모리 | SYS_TBS_MEM_DIC | CREATE DATABASE |
1 | SYSTEM MEMORY DEFAULT TABLESPACE | 메모리 | SYS_TBS_MEM_DATA | CREATE DATABASE |
2 | SYSTEM DISK DEFAULT TABLESPACE | 디스크 | SYS_TBS_DISK_DATA | CREATE DATABASE |
3 | SYSTEM UNDO TABLESPACE | 디스크 | SYS_TBS_DISK_UNDO | CREATE DATABASE |
4 | SYSTEM DISK TEMPORARY TABLESPACE | 디스크 | SYS_TBS_DISK_TEMP | CREATE DATABASE |
5이상 | USER MEMORY DATA TABLESPACE | 메모리 | 사용자 지정 | CREATE MEMORY DATA TABLESPACE |
5이상 | USER DISK DATA TABLESPACE | 디스크 | 사용자 지정 | CREATE DISK DATA TABLESPACE |
5이상 | USER DISK TEMPORARY TABLESPACE | 디스크 | 사용자 지정 | CREATE DISK TEMPORARY TABLESPACE |
5이상 | USER VOLATILE DATA TABLESPACE | 메모리 | 사용자 지정 | CREATE VOLATILE DATA TABLESPACE |