티베로 SQL 아키텍처와 주요 기능을 학습함
*tac는 다루지 않음
대규모 사용자 접속을 수용하는 다중 프로세스 및 다중 스레드 기반의 아키텍처 구조
: Listener, 워커프로세스 (Working Process 또는 Foreground Process), Background Process
-클라이언트의 새로운 접속 요청을 받아 이를 유효한 워커 프로세스에 할당
-클라이언트와 워커 프로세스 간에 중계역할 담당. 별도의 실행 파일인 tblistener를 사용하여 작업
-모니터링 프로세스에 의해서 생성되며 외부에서 강제 종료하더라도 자동으로 재 시작 됨
-Listener Port
-클라이언트의 새로운 접속 요청이 이루어지는 순서
1) client가 접속 요청
2) listener는 현재 빈 WTHR이 있는 프로세스를 찾아서 이 사용자의 접속 요청을 CTHR에게 넘겨줌
3) 요청을 받은 CTHR은 자기 자신의 WTHR 상태를 체크해서 일치하지 않는 WTHR에게 할당
4) WTHR은 client와 인증 절차를 거쳐 세션 시작
-클라이언트와 실제 통신을 하며, 사용자 요구 사항을 처리 하는 프로세스
-Foreground Worker Process는 리스너를 통해 들어온 온라인 요청 처리
-Background Worker Process는 Internal Task나 Job Scheduler에 등록된 배치 작업을 수행
-CTHR (Control Thread)
-각 Working Process마다 하나씩 생성. 서버 시작 시에 지정된 개수의 Worker Thread를 생성
-시그널 처리 담당
-I/O Multiplexing을 지원하며, 필요한 경우 워커 스레드 대신 메시지 송/수신 역할 수행
-WTHR (Worker Th-read)
-각 Worker Process마다 여러 개 생성
-client가 보내는 메시지를 받아 처리하고 그 결과를 리턴
-SQl Parsing, 최적화, 수행 등 DBMS가 해야 하는 대부분의 일 처리
-사용자의 요청을 직접 받아들이지는 않고, 워커스레드나 다른 배경 프로세스가 요청할 때, 혹은 정해진 주기에 따라 동작하며 주로 시간이 오래걸리는 디스크 작업 담당
-독립된 프로세스로서, 사용자의 요청과 비동기적으로 동작
-감시 프로세스 (MONTP: monitor process)
-Tibero 기동 시 최초로 생성되는 종료 시에도 마지막에 종료
-Tibero 기동 시, 리스너를 포함한 다른 프로세스를 생성, 주기적으로 각 프로세스 상태 점검
-교착상태 (Deadlock)도 검사
-매니저 프로세스 (MGWP: manager worker process)
-시스템 관리 용도 프로세스
-관리자의 접속 요청을 받아 이를 시스템 관리 용도로 예약된 워커 스레드에 접속을 할당
-기본적으로 워커 프로세스와 동일한 역할을 수행하지만 리스너를 거치지 않고, 스페셜 포트를 통해 직접 접속
-SYS 계정만 접속이 허용, LOCAL에서만 접속 가능
-에이전트 프로세스 (AGNT: agent process)
-시스템 유지를 위해 주기적으로 처리해야 하는 Tibero 내부의 작업을 담당
-Internal Task나 Batch Job이 언제 수행되어야 하는지 판단은 AGENT 프로세스가 담당 하지만, 실제 수행은 포어그라운드 혹은 백그라운드 워커 프로세스에게 의뢰하는 구조
-다중 스레드 기반 구조로 동작. 서로 다른 용도의 업무를 스레드 별로 나누어 수행
-데이터베이스 쓰기 프로세스 (DBWR: database writer)
-데이터베이스에서 변경된 내용을 디스크에 기록하는 일과 연관된 스레드들이 모여 있는 프로세스
-상요자가 변경한 블록을 디스크에 주기적으로 기록하는 스레드
-리두 로그를 디스크에 기록하는 스레드
-두 스레드를 통해 데이터베이스의 체크포인트 과정을 관할하는 체크포인트 스레드
-복구 프로세스 (RCWP: recover worker process)
-복구 전용 프로세스
-Crash / Instance recovery 수행
-인스턴스에 대한 데이터와 제어 정보를 가지는 공유 메모리 영역
-사용자가 동시에 데이터를 공유
-Database Buffer, Redo Log Buffer, SQL Cache, Data Dictionary Cache로 구성
-Background Process는 인스턴스가 시작될 때 TSM 영역을 할당하고, 인스턴스가 종료하면 할당 해제
-TSM의 전체 크기는 인스턴스가 시작될 때 생성되어 고정
-하나/그 이상의 Control files, Datafiles 그리고 Redo log files
-Datafiles
-Tables & Indexes 들과 같은 Logical structure들은 물리적으로 Datafiles에 저장 되는 파일
-Redo Log Files
-복구를 위하여 Database에서 변경된 모든 것을 기록 하는 파일
-Control Files
-Databse의 물리적 구조와 상태를 기록 하는 파일
-운영체제의 파일 시스템
-일반적으로 파일시스템은 논리볼륨관리자(LVM)에 의해 생성된 논리볼륨을 기반으로 구축되어 있고 LVM은 서로 다른 물리적 디스크 영역을 하나의 연속된 주소 공간으로 결합하여 제공함
-Tibero Active Storage (TAS)
-Tibero Database에서 사용하는 전용 파일시스템
-Tibero TAC 환경에서 TAS를 기반으로 데이터베이스를 생성하여 운영할 수 있음
-RAW 장치
-RAW Device는 파일시스템으로 포맷되어 있지 않은 디스크 파티션 혹은 논리 볼륨으로, 파일시스템과는 달리 캐시를 거치지 않고 직접 I/O를 수행할 수 있음
-Tibero TAC 환경에서 TAS를 기반으로 데이터베이스를 생성하여 운영할 수 있음
-클러스터 파일 시스템
-클러스터 파일 시스템은 여러 컴퓨터에서 파일의 저장소를 공유 하는 기능을 제공
-Tibero TAC 환경에서 클러스터 파일시스템을 기반으로 데이터베이스를 생성하여 운영할 수 있음
-Tibero Database는 데이터파일이라는 구조에 데이터베이스 데이터를 저장함
-Tablespace는 하나 이상의 물리적인 datafile을 가짐.하나의 datafile은 오직 하나의 Tablespace에 포함
-세그먼트는 하나 이상의 데이터 파일에 걸쳐 있을 수 있지만, 여러 Tablespace에 걸쳐져 있는 것은 아님
-테이블, 인덱스와 같은 영구적인 스키마 객체가 포함. 데이터 파일에 저장 관리됨
-세션의 또는 트랜잭션 지속 시간 동안 임시 테이블과 같은 스키마 객체의 데이터가 존재. 메모리에서의 해시 및 정렬 등의 작업 메모리 공간이 부족했을 때의 저장소로 사용됨
-일반 테이블의 영구적인 데이터는 임시파일에 저장되지 않음
-임시파일을 사용하는 스키마오브젝트는 NOLOGGING 모드로 설정되며, 미디어 복구가 안됨
-임시파일은 DBA_TEMP_FILESm VDATAFILE 뷰에서는 표시되지 않음
-모든 데이터 파일은 온라인 (사용 가능) 또는 오프라인 (사용 불가능) 상태에 해당됨
-MOUNT 모드에서 데이터파일을 오프라인 변경 후, 테이블스페이스를 삭제할 수 있음
-테이블스페이스를 오프라인 변경하면 연결된 데이터파일 또한 오프라인 상태가 됨
-데이터파일의 이름/경로를 바꾸기 위해서는 해당 테이블 스페이스를 오프라인 상태로 설정 후 변경 가능
-데이터 파일 헤더
: 데이터 사이즈에 대한 정보, 체크 포인트 TSN, 데이터베이스에서 고유하게 식별하기 위한 파일 절대번호, 테이블스페이스에서 데이터파일을 식별하기 위한 상대번호 등의 메타 정보 포함
-미사용(예전에 사용되었으나, 현재 미사용)
: 데이터의 갱신 또는 삭제가 반복되면 중간 사용하지 않는 공간이 존재하게 되며, 재사용하기에는 작은 크기일 경우, 이를 조각난 공간이라 함
-미사용(한 번도 사용한 적 없음)
: 데이터파일을 생성시 초기 포맷된 공간으로 테이블스페이스의 데이터 증가 시 데이터파일의 여유공간을 사용하여 세그먼트에 익스텐트를 할당하게 됨
-데이터 변경 내용
-TSN과 타임 스탬프
-트랜잭션 ID
-트랜잭션이 커밋 될 때의 TSN과 타임스탬프 (트랜잭션이 커밋 된 경우)
-변경을 수행 한 작업의 유형
-변경된 데이터 세그먼트의 이름 및 유형
-복구를 위해 데이터베이스 변경사항을 기록하고, 리두 로그 그룹은 적어도 2개 이상으로 순환하며 사용
-만약 Database 운영 Mode가 ARCHIVELOG Mode일 경우 Log Switch가 일어날 때 log_archive_dest로 Copy되어져 향후 복구 시 사용됨
-(인스턴스 복구시) 온라인 리두로그의 내용을 이용하여 아직 데이터 파일에 기록되지 않은 커밋된 데이터를 복구함
-리두로그 버퍼의 내용(커밋되지 않은 트랜잭션, 커밋된 트랜잭션, 언두 데이터, 스키마 객체 관리를 위해 사용한 쿼리문 등)이 기록됨
-Redo log File을 구성하는데 1 Group에 2개 이상의 Member를 동일 Machine 상에서 다른 Disk에 분리하여 구성하기 권장
-Multiplexed Redo Log Files는 특정 그룹에서 하나의 파일을 손실 시에 특이 사항 없음
-그룹의 모든 Member들은 동일한 정보와 Size를 가짐
-아카이브 리두 로그 파일은 온라인 리두로그 그룹 맴버의 복사본임
-데이터베이스 파일에 속하지는 않지만 복구를 위해 사용되는 중요한 파일임
-아카이브 리두 로그의 용도
-데이터베이스 백업 복구
-TSC( Tibero Standby Cluster) 의 Standby DB 의 데이터 업데이트
-데이터복제 솔루션인 ProSync 에서 사용
-데이터베이스 이름과 데이터베이스의 고유 식별자(DBID)
-데이터베이스 생성시각
-데이터파일, 온라인 REDO로그, 아카이브 REDO로그 정보
-테이블스페이스 정보
-RMGR 백업 정보
-Control File은 작은 Binary File로 Database의 구조.
-모든 Database Files & log files들은 Control file에서 식별 가능.
-Database name은 Control file에 저장.
-Control File은 Mount, Open시에 필요.
-Recovery시 필요한 동기화된 정보를 저장.
-최소 다른 Disk상에 2개 이상의 Control Files를 가지도록 권장.
-Control File은 Database가 Open되어 졌을 때 반드시 Tibero Server가 Writing 가능하도록 설정.
-데이터 파일에 할당되는 물리적 파일 블럭
-Data가 저장되는 최소의 구조단위.
-2k, 4k, 8k, 16k, 32k
-연속된 데이터베이스 블럭의 집합
-tablespace내 특정 구조에 대한 모든 데이터를
갖고 있는 하나 혹은 하나 이상의 익스텐트의 집합.
-table, index segment
-물리적으로 그룹화된 데이터를 위한 논리적 저장 단위.
-테이블스페이스가 저장되어서 공유되는 논리적 집합체
세그먼트와 익스텐트, 데이터 블록의 관계
테이블스페이스 공간 관리
세그먼트 생성
UNDO 세그먼트
세그먼트 공간관리와 HWM(High Water Mark)
데이터 블록
행 연쇄(Row Chaining) & 행 이주(Row Migration)
ROWID
테이블스페이스
-Instance 시작할 때 Parameter file($TB_SID.tip)을 Read
-기본으로 TSM에 있는 Memory 구성을 얼마로 할 것인지를 setting 필요
-Control file의 위치와 이름
-Tibero Instance가 실행 중에 Error발생시 messages은 Trace or Dbms Log file에 Write.
-서버 성능이 저하되는 원인을 찾거나 티베로 자체 버그를 해결하는 데 사용될 수 있음
-Log File은 TB_SID/log/slog ( <--trace ) Directory에 Write.
-다음과 같은 Error발생시 Write.
-All internal errors
-Block corruption errors
-Deadlock errors
-Et
-Log File은 TB_SID/log/dlog (<--dbms) Directory에 Write.
-서버 기동 및 종류, DDL 문장의 수행 등이 기록되는 파일.
-다음과 같은 Error발생시 Write.
-DDL, Server Manager statements (STARTUP, SHUTDOWN,ARCHIVE LOG, and RECOVER)
-Listener의 디버깅을 위한 파일이다. 리스너에서 일어난 중요한 일이 기록되는 파일이며, 리스너의 버그를 해결하는 데 사용될 수 있다
-스레드별로 설정된 이벤트에 대한 시스템 로그가 기록되는 파일이며, Internal 로그를 보려면 tbiv를
이용해야 한다
:Tibero는 대용량 데이터 처리를 위한 아키텍처를 기반으로 고성능 처리를 지원합니다.
-다양한 실행계획 중 최소 비용(Disk I/O, CPU 사용)의 실행 계획을 선택하여 빠른 SQL 실행 보장
-실행 계획과 실행 통계를 조회하여 튜닝할 수 있는 다양한 Tool 제공
-업무에서 많이 사용되는 약 40개의 Hint가 제공되어 실행 계획을 제어할 수 있음
-다양한 Index
-B*Tree, Reverse Key,
Function-Based Index,
IOT(Index-Organized Table)
-Table 및 Index 파티셔닝
-Range, List, Hash 및
Composite Partitioning
-파티션에 따른 Local Index,
Global Index
-병렬 쿼리를 통한 성능 향상
-다수의 Thread를 이용하여 시스템 리소스 활용 극대화
-대용량 테이블 또는 파티션 인덱스 스캔, Join 쿼리
-대용량 테이블 인덱스 생성
-Bulk Insert/Update/Delete
-Aggregation 함수
-대용량 데이터의 압축 기능
-Block 단위 압축
-Table 전체 압축
-Tibero의 TAC 기술은 안정성과 고가용성을 위한 핵심으로서 공유디스크 기반의 Active Clustering을
통하여 다양한 유형의 장애에도 시스템 중단 없이 안정적인 서비스를 지원
-DB엔진 장애
-시스템 장애
-public Network 장애
-Interconnect 장애
-정상 노드로 Fail-over
-독립디스크 기반 Active-Standly 방식으로 자료 보호, 재해 복구(Disaster Recovery)등을 목적으로 함
-원본 데이터베이스 또는 디스크 Fail 시 신속히 서비스를 재개하고 자료 보호
-장애 복구 후 변경 데이터에 대한 데이터 동기화 후 기존 Active 서버로 정상적인 서비스 재개 가능
-장애 시 서비스의 중단을 최소화 복구 가능
-복제 대상의 Active 서버 (Node 2)는 Read Only로 운영되어 Select 및 테스트 용도로 사용하여 자원 효율성을 높임
-장애로부터 데이터를 안전하게 보호하기 위하여, 다양한 백업/복구 방법을 지원
• DB가 운영 중인 상태에서 주기적으로 데이터 파일 및 로그 파일을 백업 서버로 전송
(1) 완전 복구 : DB를 가장 최신 상태로 복구
(2) 불완전 복구
-특정 시간 기준
-특정 TSN 기준
-특정 Archive log 파일 기준
• Offline 백업 & 복구
• Crash Recovery
• Online Media Recovery
• Export/Import 이용한 논리적 백업/복구
• Flashback Query 지원
-과거 특정 시점 데이터 조회
• 복구 관리자(RMGR) 제공
-Online Full Backup
-Incremental Backup
-Automatic Recovery
-Tibero는 DB 자체 보안 기능 뿐 아니라, 암호화 솔루션과의 연동 및 빠른 암호화를 지원
Tibero 내장 보안 기술
DBMS 엔진 레벨 암호화(TDE)
• TDE 컬럼 암호화
• TDE 테이블스페이스 암호화
• TDE 암호화 키 외부 관리
• AP에서 사용 가능한 암복호화 함수
-DBMS_CRYPTO 패키지
• 암호화 솔루션 연동
• Profile 기능
• Audit 기능
• 특권 및 Role
• 네트워크 접근 제어
• Masking
-Tibero RDBMS를 이용하는 개발자와 관리자에게 필요한 Utility 를 지원
-SQL 문장의 입력, 편집, 실행
-각종 모니터링 및 관리자 기능
-마이그레이션 및 호환성
-평가기능을 제공하는 Tool
-DB에 저장된 Schema 객체 및 데이터를 추출/적재 하는 도구
-대용량 데이터 파일을 데이터베이스로 고속 적재
-데이터베이스의 온라인 백업 및 복구를 손쉽게 수행
tbSQL
-사용자가 직접 SQL 질의를 하고 그 결과를 확인하는 Client 유틸리티
tbpc
-tbESQL/C의 프리컴파일러
tbdv
-데이터파일의 기본적인 정합성 검사
(헤더블록, 남은 공간 등)