순서
CH01 데이터베이스 기본
CH02 응용 SQL 작성하기
CH03 절차형 SQL 활용하기
CH04 데이터 조작 프로시저 최적화
<CH01 데이터베이스 기본>
트랜잭션(Transaction)
인가받지 않은 사용자로부터 데이터를 보장하기 위해 DBMS가 가져야 하는 특성, 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위
특징
- 원자성(Atomicity) : 트랜잭션의 연산 전체가 성공 또는 실패되어야 하는 성질(All or Nothing)
ex) commit, rollback, 회복성 보장 - 일관성(Consistency) : 트랜잭션 수행 성공후 항상 일관된 DB상태를 보존해야 함
ex) 무결성제약조건, 동시성 제어 - 격리성(Isolation) : 트랜잭션 실행중 생성하는 연산 중간결과를 다른 트랜잭션이 접근불가
ex) Read Uncommited, Read Commited, Repeatable Read, Serializeble - 영속성(Durability) : 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장됨
ex 회복기법
트랜잭션 제어어(TCL: Transaction Control Language)
트랜잭션의 결과를 허용하거나 취소하는 목적으로 사용되는 언어
TCL 명령어
- COMMIT: 트랜잭션을 메모리에 영구적으로 저장하는 명령어
- ROLLBACK: 트랜잭션 내역의 저장을 무효화시키는 명령어
- CHECKPOINT(SAVEPOINT): ROLLBACK을 위한 시점을 지정하는 명령어
데이터베이스
데이터 정의어(DDL: Data Definition Language)
DB를 구축하거나 수정할 목적으로 사용하는 언어
DDL 명령어
- CREATE: 생성
- ALTER: 수정
- DROP: 삭제
- CASCADE: 제거할 요소를 참조하는 다른 모든 개체를 함께 제거
- RESTRICT: 다른 개체가 제거할 요소를 참조중일 때는 제거를 취소
DDL 대상
- 도메인(Domain): 하나의 속성이 가질 수 있는 원자값들의 집합
- 스키마(Schema): 데이터베이스의 구조, 제약조건 등의 정보를 담고 있는 기본적인 구조
- 외부 스키마, 개념 스키마, 내부 스키마
- 테이블(Table): 데이터 저장 공간
- 뷰(View): 하나 이상의 물리 테이블에서 유도되는 가상의 테이블
- 인덱스(Index): 검색을 빠르게 하기 위한 데이터 구조
- 순서 인덱스(Ordered Index): 데이터가 정렬된 순서로 생성되는 인덱스
- 해시 인덱스(Hash Index): 해시 함수에 의해 직접 데이터에 키 값으로 접근하는 인덱스
- 비트맵 인덱스(Bitmap Index): bit 값인 0또는 1로 변환하여 인덱스 키로 사용하는 인덱스
- 함수기반 인덱스(Functional Index): 수식이나 함수를 적용하여 만든 인덱스
- 단일 인덱스(Single Index): 하나의 칼럼으로만 구성한 인덱스
- 결합 인덱스(Concatenated Index): 두 개 이상의 컬럼으로 구성한 인덱스
- 클러스터드 인덱스(Clustered Index): 인덱스 키의 순서에 따라 데이터가 정렬되어 저장되는 방식(검색 빠름)
- 넌클러스터드 인덱스(Non-Clustered Index): 인덱스의 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식(데이터 삽입, 삭제 시 데이터 재정렬해야함)
데이터 조작어(DML: Data Manipulation Language)
저장된 데이터를 실질적으로 관리하는데 사용되는 언어
DML 명령어
- SELECT: 조회
- INSERT: 삽입
- UPDATE: 수정
- DELETE: 삭제
데이터 제어어(DCL: Data Control Language)
데이터의 보안, 무결성, 회복, 병행 제어등을 정의하는데 사용하는 언어
DCL 명령어
- GRANT: 사용 권한 부여
- REVOKE: 사용 권한 취소
<CH02 응용 SQL 작성하기>
데이터 분석 함수 종류
- 집계 함수: 여러 행 또는 테이블 전체 행으로부터 하나의 결과값을 반환하는 함수
- 그룹 함수: 소그룹 간의 소계 및 중계 등의 중간 합계 분석 데이터를 산출하는 함수
- 윈도 함수: 데이터베이스를 사용한 오라인 부석 처리 용도로 사용하기 위해서 표준 SQK에 추가된 기능
<CH03 절차형 SQL 활용하기>
절차형 SQL(Procedural SQL)
SQL언어에서도 절차 지향적인 프로그램이 가능하도록 하는 트랜잭션 언어
종류
- 프로시저(Procedure): 일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합
- 사용자 정의 함수(User-Defined Function): SQL 처리를 수행하고, 수행 결과를 단일 값으로 반환할 수 있는 절차형 SQL
- 트리거(Trigger): 데이터베이스 시스템에서 삽입, 갱신, 삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL
<CH04 데이터 조작 프로시저 최적화>
쿼리 성능 개선
최소의 시간으로 원하는 결과를 얻도록 프로시저를 수정하는 작업
문제있는 SQL식별 → 옵티마이저 통계확인 → SQL문 재구성 → 인덱스 재구성 → 실행계획 유지관리
옵티마이저(Optimizer)
SQL이 가장 효율적으로 수행되도록 최적의 경로를 찾아 주는 모듈
- 규칙기발 옵티마이저(RBO): 사전에 정의해둔 규칙에 의거하여 경로를 찾는 규칙 기반 옵티마이저
- 비용기반 옵티마이저(CBO): 각 DBMS마다 고유의 알고리즘에 따라 산출되는 비용으로 최적의 경로를 찾는 비용기반 옵티마이저
- 쿼리변환 → 비용산정 → 계획생성
힌트(Hint)
실행하려는 SQL문에 사전에 정보를 주어서 SQL문 실행에 빠른 결과를 가져오는 효과를 만드는 문법
- 옵티마이저의 실행 계획을 원하는 대로 변경할 수 있게 한다
- 옵티마이저는 명시적인 힌트를 통해 실행 계획을 변경한다.
⚠️참고
https://dustink.tistory.com/157
https://domdom.tistory.com/entry/2021-정보처리기사-실기-10-SQL-응용
'Computer Science > 정보처리기사' 카테고리의 다른 글
[정보처리기사-실기] 9장 소프트웨어 개발 보안 구축 (0) | 2022.04.30 |
---|---|
[정보처리기사-실기] 8장 서버프로그램 구현 (0) | 2022.04.28 |
[정보처리기사-실기] 6장 프로그래밍 언어 활용 (0) | 2022.04.27 |
[정보처리기사-실기] 5장 인터페이스 구현 (0) | 2022.04.26 |
[정보처리기사-실기] 4장 통합 구현 (0) | 2022.04.25 |
댓글