1. 트랜잭션
- 트랜잭션 : 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위
- 트랜잭션의 특성
- 원자성(Atomicity) : 트랜잭션의 연산 전체가 성공 또는 실패되어야 함
- 일관성(Consistency) : 시스템의 고정요소는 트랜잭션 수행 전과 수행 완료 후의 상태가 같아야 함
- 격리성(Isolation) : 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 함
- 영속성(Durability) : 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장되어야 함
- 트랜잭션 상태 변화
- 활동 상태(Active) : 초기 상태로, 트랜잭션이 실행 중
- 부분 완료 상태(Partially Committed) : 마지막 명령문이 실행된 후
- 완료 상태(Committed) : 트랜잭션이 성공적으로 완료
- 실패 상태(Failed) : 정상적인 실행이 더 이상 진행될 수 없음
- 철회 상태(Aborted) : 트랜잭션이 취소되고 데이터베이스가 트랜잭션 시작 전 상태로 환원
- 트랜젝션 제어(TCL)
- COMMIT : 트랜잭션 확정. 트랜잭션을 메모리에 영구적으로 저장
- ROLLBACK : 트랜잭션 취소. 트랜잭션 내역을 저장 무효화
- CHECKPOINT : 저장 시기 서정. ROLLBACK을 위한 시점을 지정
- 병행 제어 :다수 사용자 환경에서 여러 트랜잭션을 수행할 때, 데이터베이스 일관성 유지를 위해 상호 작용 제어
- 병행 제어의 목적
- 데이터베이스의 공유 최대화
- 시스템 활용도 최대화
- 데이터베이스 일관성 유지
- 사용자 응답시간 최소화
- 병행 제어 기법의 종류
- 로킹(Locking) : 다른 트랜잭션들이 동시에 접근하지 못하도록 상호 배제 기능을 제공. 로킹 단위가 작아지면 데이터베이스 공유도, 로킹 오버헤드 등이 증가
- 낙관적 검증(Optimisic Validation) : 트랜잭션 수행 후, 트랜잭션 종료 시 검증을 수행하여 데이터베이스에 반영
- 타임 스탬프 순서(Time Samp Ordering) : 트랜잭션 실행 전 타임 스탬프를 부여하여 부여된 시간에 따라 트랜잭션 수행
- 다중버전 동시성 제어(MVCC) : 타임스탬프를 비교하여 직렬가능성이 보장되는 적절한 버전을 선택하여 접근
- 2PC : 분산 데이터베이스 시스템의 일관성 유지를 위해 트랜잭션을 두 단계로 분리하여 제어
- 1단계(준비 단계) : 트랜잭션 수행 결과를 다른 분산 시스템에 알리는 과정
- 2단계(커밋 단계) : 모든 분산 시스템의 트랜잭션 수행 결과가 일치하는 지 확인 후, 커밋/롤백 수행
- 데이터베이스 고립화 수준 : 다른 트랜재견이 현재의 데이터에 대한 무결성을 해치지 않기 위해 잠금을 설정하는 정도
- 회복 기법(영속성 주요 기법) : 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업
- 회복 기법 종류
- REDO : 디스크에 저장된 로그를 분석하여 트랜잭션들의 작업을 재작업
- UNDO : 디스크에 저장된 로그를 분석하여 작업한 변경 내용들을 모두 취소하는 기법
- 로그 기반 회복 기법
- 지연 갱신 회복 기법 : 트랜잭션이 완료되기 전까지 데이터베이스에 기록하지 않는 기법
- 즉각 갱신 회복 기법 : 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영하는 기법
- 체크 포인트 회복 기법 : 장애 발생 시 검사점 이후에 처리된 트랜잭션에 대해서만 이전 상태로 복원 기법
- 그림자 페이징 회복 기법 : 트랜잭션 수행 시 복제본을 생성하여 이를 이용해 복구하는 기법
- 데이터 정의어(DDL) : 데이터를 정의하는 언어
- DDL 대상
- 스키마 : 데이터베이스의 구조, 제약조건 등의 정보를 담고 있는 기본적인 구조
- 스키마의 구성
- 외부 스키마 : 사용자나 개발자의 관점에서 필요로 하는 데이터베이스의 논리적 구조
- 개념 스키마 : 데이터베이스의 전체적인 논리적 구조. 관계, 제약조건, 접근 권한, 무결성, 보안 등에 대해 정의
- 내부 스키마 : 물리적 저장 장치의 관점에서 보는 데이터베이스 구조
- 테이블(릴레이션, 엔터티) : 데이터를 저장하는 항목인 필드들로 구성된 데이터의 집합체
- 테이블 용어
- 튜플/행(Tuple/Row) : 테이블 내의 행(가로), 같은 값을 가질 수 없음
- 속성/열(Attribute/Column) : 테이블 내의 열(세로)
- 카디널리티(Cardinality) : 튜플의 개수
- 차수(Degree) : 속성의 개수
- 도메인(Domain) : 하나의 속성이 취할 수 있는 같은 타입의 원자값들의 집합
- 뷰 : 논리 테이블로서 사용자에게 테이블과 동일
- 뷰의 장단점
- 장점 : 논리적 독립성 제공, 데이터 조작 연산 간소화, 보안 기능 제공
- 단점 : 뷰 자체 인덱스 불가, 뷰 변경 불가, 데이터 변경 제약 존재
- 인덱스 : 검색 연산의 최적화를 위해 데이터베이스 내 값에 대한 주소로 정보로 구성된 데이터 구조
- DDL 명령어 : CREATE, ALTER, DROP, TRUNCATE
- 데이터 조작어(DML) : 데이터베이스에 저장된 자료들을 입력, 수정, 삭제, 조회하는 언어
- DML 명령어 : SELECT, INSERT, UPDATE, DELETE
- DML 상세
- 조인(Join) : 두 개 이상의 테이블을 연결하여 데이터를 검색하는 방법
- 조인 종류
- 교차 조인(Cross Join) : 조인 조건이 없는 모든 데이터 조합을 추출하는 조인
- 세타 조인(Theta Join) : 두 테이블에서 조건(ON)을 만족하는 튜플만 반환하는 조인
- 동등 조인(Inner Join) : 두 테이블의 값이 정확히 같을 때(=)만 데이터를 가져오는 조인
- 자연 조인(Natural Join) : 동등 조인에서 중복된 속성은 하나만 남긴 결과를 반환
- 외부 조인(Outer Join) : 자연 조인 시 조인에 실패한 튜플을 모두 보여주되 값이 없는 속성은 NULL값으로 반환
- 세미 조인(Semi Join) : 자연 조인을 한 후 두 테이블 중 한쪽 테이블의 결과만 반환
- 셀프 조인(Self Join) : 자기 자신에게 별칭을 지정한 후 다시 조인하는 기법
- 서브 쿼리 : SQL 문 안에 포함된 또 다른 SQL 문
- 서브 쿼리 유형
- FROM 절 : 인라인 뷰라고 불리며, 뷰처럼 결과가 동적으로 생성된 테이블 형태로 사용 가능
- WHERE 절 : 주첩 서브쿼리라고 불리며, WHERE 절 안에 서브쿼리가 들어있는 형태
- 집합 연산자 : 두 테이블 연산에 집합 연산자를 사용하는 방식
- 집한 연산자 유형
- UNION : 중복 행이 제거된 쿼리 결과를 반환
- UNION ALL : 중복행이 제거되지 않은 쿼리 결과를 반환
- INTERSECT : 두 쿼리 결과에 공통적으로 존재하는 결과를 반환
- MINUS : 첫 쿼리에 있고 두 번째 쿼리에는 없는 결과를 반환
- 데이터 제어어(DCL) : 데이터베이스 관리자가 데이터 보안, 무결성 유지, 병행 제어, 회복을 위해 사용하는 제어용 언어
- DCL 명령어 : GRANT, REVOKE
# 회고
leetcode로 SQL도 다시 풀어봐야겠담..안푸니까 감을 잃어버림
'개인 스터디 > 정리' 카테고리의 다른 글
[정보처리기사 실기] 17. 개발 환경 구축~18. 모듈 구현 (0) | 2025.05.08 |
---|---|
[정보처리기사 실기] 15. 응용 SQL~16.SQL 활용 및 최적화 (0) | 2025.05.05 |
[정보처리기사 실기] 13. Python (0) | 2025.05.01 |
[정보처리기사 실기] 12. 자바 (0) | 2025.04.30 |
[정보처리기사 실기] 10. 프로그래밍을 위한 기본 사항~11. C언어 (0) | 2025.04.28 |