7️⃣SQL 응용
트랜잭션
데이터베이스 시스템에서 하나의 논리적 기능을 정상적로 수행하기 위한 작업의 기본 단위
트랜잭션의 특성 (원일고지)
- 원자성(Atomicity) : 트랜잭션의 연산 전체가 성고 ㅇ또는 실패가 되어야 하는 성질
- 일관성(Consistency) : 트랜잭션의 수행 전과 수행 완료 후의 상태가 같아야 하는 성질
- 격리성 = 고립성(Isolation) : 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 한다는 성질
- 영속성(Durability) : 트랜잭션의 결과는 영속적으로 데이터베이스에 저장되어야 하는 성질
트랜잭션 제어
- 커밋(Commit) : 트랜잭션을 메모리에 영구적으로 저장하는 제어어
- 롤백(Rollback) : 오류가 발생했을 때, 오류 이전의 특정시점(Rollback) 상태로 되돌려 주는 제어어
- 체크포인트(Checkpoint) : Rollback을 위한 시점을 지정하는 제어어
데이터베이스 회복 기법
- REDO : 트랜잭션의 시작과 완료에 대한 기록이 있는 트랜잭션들의 작업을 재작업
- UNDO : 트랜잭션의 시작은 있지만 완료에 대한 기록이 없는 트랜잭션들이 작업한 변경 내용들을 모두 취소하는 기법
로킹
같은 자원을 액세스하는 다중 트랜잭션 환경에서 DB의 일관성과 무결성을 유지하기 위해 트랜잭션의 순차적 진행을 보장하는 직렬화 기법
데이터베이스 파일 구조
- 순차 방법 : 레코드들의 물리적 순서가 레코드들의 논리적 순서와 같게 순차적으로 저장
- 인덱스 방법 : 인덱스가 가리키는 주소를 따라 원하는 레코드에 접근
- 해싱 방법 : 키값을 해시 함수에 대입시켜 계산한 결과를 주소로 사용하여 레코드에 접근
스키마
- 외부 스키마 : 사용자나 개발자의 관점에서 필요로 하는 데이터베이스의 논리적 구조
- 개념 스키마 : 데이터베이스의 전체적인 논리적 구조
- 내부 스키마 : 물리적 저장 장치의 관점에서 보는 데이터베이스 구조
절차형 SQL 종류
- 프로시저 : 일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합
- 사용자 정의 함수 : 일련의 SQL처리를 수행하고, 수행 결과를 단일 값으로 반환할 수 있는 절차형 SQL
- 트리거 : 데이터베이스 시스템에서 삽입, 갱신, 삭제등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행
옵티마이저
SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해주는 DBMS 내부의 핵심 엔진
옵티마이저 유형
- 규칙기반(RBO) : 통계 정보가 없는 상태에서 사전 등록된 규칙에 따라 질의 실행 계획을 선택
- 비용기반(CBO) : 통계 정보로 부터 모든 접근 경로를 고려한 질의 실행 계획을 선택