꼭대기
로그인
꼭대기
로그인
데이터베이스
뿌엑
·
2022년 4월 16일
팔로우
0
0
정보처리기사
목록 보기
12/20
트랜잭션
인가받지 않은 사용자로부터 데이터를 보장하기 위해 DBMS가 가져야 하는 특성
데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위
트랜잭션 특성
원자성(Atomicity)
분해 불가능한 작업의 최소 단위
연산 전체가 성공 혹은 실패
하나라도 실패한다면 전체가 취소돼야 함
Commit/Rollback, 회복성 보장
일관성(Consistency)
트랜잭션 실행 성공 후 항상 일관된 데이터베이스 상태를 보존해야 함
무결성 제약조건, 동시성 제어
격리성(Isolation)
트랜잭션 실행 중 생성하는 연산의 중간 결과를 다른 트랜잭션이 접근 불가한 속성
Read Uncommited, Read Commited, Repeatable Read, Serializable
영속성(Durability)
성공 완료된 트랜잭션 결과는 영속적으로 데이터베이스에 저장됨
회복기법
트랜잭션 제어
트랜잭션 제어 언어는 TCL(Transaction Control Language)라고 하며, 트랜잭션의 결과를 허용하거나 취소하는 목적으로 사용되는 언어를 가리킨다.
트랜잭션 상태
활동 상태(Actice)
초기 상태, 트랜잭션이 실행 중일 때의 상태
부분 완료 상태(Partially Committed)
마지막 명령문이 실행된 이후의 상태
완료 상태(Committed)
트랜잭션이 성공적으로 완료된 이후의 상태
실패 상태(Failed)
정상적인 실행이 이뤄질 수 없을 때의 상태
철회 상태(Aborted)
트랜잭션이 취소되고 데이터베이스가 트랜잭션 시작 전 상태로 회귀한 상태
TCL 명령어
COMMIT
트랜잭션을 메모리에 저장
ROLLBACK
트랜잭션을 저장하지 않고 취소시킴
CHECKPOINT
ROLLBACK을 위한 시점 지정
병행 제어(일관성 주요 기법)
병행 제어는 다수 사용자 환경에서 여러 트랜잭션을 수행할 때, 데이터베이스 일관성 유지를 위해 상호작용을 제어하는 기법이다.
병행 제어 미보장시 문제점
갱신 손실(Lost Update)
먼저 실행된 트랜잭션의 결과를 나중에 실행된 트랜잭션이 덮어쓸 때 발생하는 오류
현황 파악오류(Dirty Read)
트랜잭션의 중간 수행결과를 다른 트랜잭션이 참조하여 발생하는 오류
모순성(Inconsistency)
두 트랜잭션이 동시에 실행되어 데이터베이스의 일관성이 결여되는 오류
연쇄복귀(Cascading Rollback)
복수 트랜잭션이 데이터 공유시 특정 트랜잭션이 처리를 취소하는 경우 다른 트랜잭션이 처리한 부분에 대해 취소 불가능
병행 제어 기법의 종류
로킹(Locking)
같은 자원을 액세스하는 다중 트랜잭션 환경에서 DB의 일관성과 무결성을 유지하기 위해 트랜잭션의 순차적 진행을 보장하는 직렬화 기법
낙관적 검증
트랜잭션이 검증없이 트랜잭션을 수행하고, 트랜잭션 종료시 검증을 수행하여 데이터베이스에 반영
타임 스탬프 순서(Time Stamp Ordering)
트랜잭션을 식별하기 위해 DBMS가 부여하는 유일한 식별자인 타임 스탬프를 지정하여 트랜잭션 사이 순서를 미리 선택
데이터베이스 고립화 수준(격리성 주요 기법)
고립화 수준은 다른 트랜잭션이 현재의 데이터에 대한 무결성을 해치지 않기 위해 잠금을 설정하는 정도이다.
고립화 수준 종류
Read Uncommitted
한 트랜잭션에서 연산(갱신) 중인 데이터를 다른 트랜잭션이 조회하는 것을 허용함
연산(갱신) 중인 데이터에 대한 연산은 허용하지 않음
Read Committed
한 트랜잭션에서 연산(갱신)을 수행할 때, 연산이 완료될 때까지 연산 대상 데이터에 대한 조회를 제한함
연산이 완료되어 커밋된 데이터는 다른 트랜잭션이 조회하는 것을 허용한다.
Repeatable Read
선행 트랜잭션이 특정 데이터를 읽을 때, 트랜잭션 종료시까지 해당 데이터에 대한 갱신·삭제를 제한함
Serializable Read
선행 트랜잭션이 특정 데이터 영역을 순차적으로 읽을 때, 해당 데이터 영역 전체에 대해 접근을 제한함
회복 기법(영속성 주요 기법)
회복 기법은 트랜잭션을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업이다.
데이터 정의어(DDL; Data Definition Language)
테이블과 같은 데이터 구조를 정의하는데 사용하는 명령어
특정 구조를 생성, 변경, 삭제하는 명령어를 DDL이라 한다.
DDL 대상
도메인
스키마
테이블
뷰
인덱스
명령어
CREATE -> 생성
ALTER -> 수정
DROP -> 삭제
TRUNCATE -> 테이블 내용 삭제(초기화)
인덱스
인덱스는 테이블에 대한 조회 속도를 향상시키는 자료 구조이다.
인덱스는 테이블의 특정 레코드 위치를 알리는 용도로 사용된다.
특징
기본키(PK) 컬럼은 자동으로 인덱스가 생성된다.
테이블의 컬럼에 인덱스가 없다면 테이블의 전체 내용을 검색한다(Table Full Scan).
인덱스가 있을 때 빠르게 데이터를 찾을 수 있다(Index Range Scan).
조건절에 '='로 비교되는 컬럼을 대상으로 인덱스를 생성하면 검색 속도를 높일 수 있다.
종류
순서 인덱스(Ordered Index)
데이터가 정렬된 순서로 생성되는 인덱스
B-Tree 알고리즘 활용(오름차순/내림차순 지정 가능)
해시 인덱스(Hash Index)
해시 함수에 의해 직접 데이터에 키값으로 접근하는 인덱스
데이터 접근 비용이 튜플의 양과 무관하게 균일
비트맵 인덱스(Bitmap Index)
각 컬럼에 적은 개수의 값이 저장되어 있을 때 선택
수정 변경이 적을 경우 유용(생년월일, 상품번호 등)
함수기반 인덱스(Functional Index)
수식이나 함수를 적용하여 만든 인덱스
단일 인덱스(Singled Index)
하나의 컬럼으로만 구성한 인덱스
주 사용 컬럼이 하나일 경우 사용
결합 인덱스(Concatenate Index)
두 개 이상의 컬럼으로 구성한 인덱스
WHERE 조건으로 사용하는 빈도가 높을 때 사용
클러스터드 인덱스(Clustered Index)
기본키(PK)를 기준으로 레코드를 묶어 저장하는 인덱스
저장 데이터의 물리적 순서에 따라 인덱스 생성
특정 범위 검색시 유리함
인덱스 스캔 방식
인덱스 범위 스캔(Index Range Scan)
인덱스 루트 블록에서 리프 블록까지 수직적으로 탐색한 뒤, 리프 블록에서 필요한 범위만큼 스캔하는 방식
인덱스 전체 스캔(Index Full Scan)
수직적 탐색없이 인덱스 리프 블록을 처음부터 끝까지 수평적으로 탐색하는 방식
인덱스 단일 스캔(Index Unique Scan)
수직적 탐색만으로 데이터를 찾는 스캔 방식
인덱스 생략 스캔(Index Skip Scan)
선두 컬럼이 조건절에 빠졌어도 인덱스를 활용하는 스캔 방식
데이터 조작어(DML; Data Manipulation Language)
데이터 조작어는 데이터베이스에 저장된 자료들을 입력, 수정, 삭제, 조회하는 언어이다.
SELECT, INSERT, UPDATE, DELETE
집합 연산자
테이블을 집합으로 간주하여 두 테이블 연산에 집합 연산자를 사용할 수 있다.
UNION
중복 행이 제거된 쿼리 결과를 반환
UNION ALL
중복 행이 제거되지 않은 쿼리 결과를 반환
INTERSECT
두 쿼리 결과에 공통적으로 존재하는 결과를 반환
MINUS
첫 쿼리와 두 쿼리의 차집합을 반환
데이터 제어어(DCL; Data Control Language)
데이터 제어어는 데이터베이스 관리자가 데이터 보안, 무결성 유지, 병행 제어, 회복을 위해 사용하는 제어용 언어이다.
명령어
GRANT
사용 권한 부여
REVOKE
사용 권한 취소
데이터 분석 함수
총합, 평균 등의 데이터 분석을 위해 여러 행의 데이터를 처리하는 함수이다.
종류
집계 함수
여러 행 또는 테이블 전체 행에서 하나의 결괏값 반환
그룹 함수
소그룹 간 소계 및 중계 등 중간 합계 분석 데이터를 산출하는 함수
윈도 함수
데이터베이스를 사용한 온라인 분석 처리 용도로 사용하기 위해 표준 SQL에 추가된 기능
그룹 함수
테이블의 전체 행을 하나 이상의 컬럼을 기준으로 컬럼 값에 따라 그룹화하여 그룹별로 결과를 출력하는 함수이다.
그룹 함수 종류
ROLLUP
소계를 산출하는 그룹 함수
CUBE
결합가능한 모든 값에 대해 다차원 집계를 생성하는 그룹 함수
GROUPING SET
집계 대상 컬럼에 대해 개별 집계를 구할 수 있고, ROLLUP과 CUBE와 달리 컬럼 간 순서와 무관한 결과를 얻을 수 있는 그룹 함수
윈도 함수
데이터베이스를 사용한 온라인 분석 처리 용도의 함수이다.
윈도 함수 종류
순위 함수
레코드의 순위를 계산하는 함수
RANK, DENSE_RANK, ROW_NUMBER
행 순서 함수
레코드에서 가장 먼저 나오거나 가장 뒤에 나오는 값, 이전/이후의 값들을 출력하는 함수
FIRST_VALUE, LAST_VALUE, LAG, LEAD
그룹 내 비율 함수
백분율을 보이거나 행의 순서별 백분율 등 비율과 관련된 통계를 나타내는 함수
RATIO_TO_REPORT, PERCENT_RANK
뿌엑
팔로우
이전 포스트
인터페이스 구현
다음 포스트
데이터 조작 프로시저 최적화
0개의 댓글
댓글 작성