본문 바로가기
자격증

[4일차] 정보처리기사 실기 7장-SQL 응용

by lovedeveloping 2024. 10. 2.
반응형

교재 참고
교재 참고

오늘은 4일 차 SQL 응용 파트입니다. 오늘도 열심히 정리해 보겠습니다.

Chap01. 데이터베이스 기본

트랜잭션

트랜잭션의 개념

데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위이다.

트랜잭션의 특성

특성 설명 주요기법
원자성(Atomtcity) 트랜잭션의 연산 전체가 성공 또는 실패 되어야 하는 성질 Commit/Rollback
일관성(Consistency) 시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 수행 완료 후의 상태가 같아야 하는 성질 무결성 제약 조건
고립성(지속성)(Isolation) 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 한다는 성질 고립화 수준
영속성(Durability) 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장되어야 하는 성질 회복 기법

트랜잭션 제어

명령어 핵심 설명
커밋(COMMIT) 트랜잭션 확정 트랜잭션을 메모리에 영구적으로 저장하는 명령어
롤백(ROLLBACK) 트랜잭션 취소 트랜잭션 내역을 저장 무효화시키는 명령어
체크포인트(CHECKPOINT) 저장 시기 설정 ROLLBACK을 위한 시점을 지정하는 명령어

병행 제어(일관성 주요 기법)

병행 제어는 다수 사용자 환경에서 여러 트랜잭션을 수행할 때, 데이터베이스 일관성을 유지를 위해 상호 작용을 제어하는 기법이다.

종류

기법 설명
로킹(Locking) 하나의 트랜잭션을 실행하는 동안 특정 데이터 항목에 대해서 다른 트랜잭션이 동시에 접근하지 못하도록 상호배제 기능을 제공하는 기법
낙관적 검증 트랜잭션이 어떠한 검증도 수행하지 않고 일단 트랜잭션을 수행하고, 트랜잭션 종료 시 검증을 수행하여 데이터베이스에 반영하는 기법
타임 스탬프 순서 트랜잭션이 실행을 시작하기 전에 타임 스탬프를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는
기법
다중버전 동시성 제어 트랜잭션의 타임스탬프와 접근하려는 데이터의 타임스탬프를 비교하여 직렬가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법
2PC 데이터베이스 동시성 제어 기술 중 하나로, 여러 개의 분산 데이터베이스 시스템에서 트랜잭션의 일관성을 유지하기 위한 기법

- 트랜잭션 두 단계로 분리하여 제어 - 
1단계 (준비 단계): 트랜잭션 수행 결과를 다른 분산 시스템에 알리는 과정
2단계 (커밋 단계): 
  - 모든 분산 시스템에서 트랜잭션 수행 결과가 일치하는지 확인하는 과정
  - 모든 분산 시스템이 트랜잭션을 성공적으로 수행했다면, 커밋을 수행 그렇지 않는다면 롤백을 수정 

데이터베이스 고립화 수준

수준 설명
Read Uncommited - 한 트랜잭션에서 연산중인 데이터를 다른 트랜잭션이 읽는 것을 허용하는 수준
- 연산중인 데이터에 대한 연산을 불허
Read Cpmmitted - 한 트랜잭션에서 연산을 수행할 때, 연산이 완료될 때까지 연산 대상 데이터에 대한 읽기를 제한하는 수준
- 연산이 완료되어 커밋된 데이터는 다른 트랜잭션이 읽는 것을 허용
Repeatable Read - 선행 트랜잭션이 특정 데이터를 읽을 때, 트랜잭션 종료 시까지 해당 데이터에 대한 갱신, 삭제를 제한하는 수준
Serializable Read - 선행 트랜잭션이 특정 데이터 영역을 순차적으로 읽을 때, 해당 데이터 영역 전체에 대한 접근 제한하는 수준

회복 기법

Redo
- 데이터베이스 내용 자체가 손상된 경우, 가장 최근의 복제본을 적재한 후 이후 일어난 변경만을 로그 이용하여 재실생함으로써
  데이터베이스를 복원하는 기법
Undo
- 데이터베이스 내용 자체를 손상되지 않았지만, 변경 중이거나 변경된 내용에 대한 신뢰성을 읽어버린 경우, 모든 변경 내용을
  취소하여 복원하는 기법

DDL

테이블과 같은 데이터 구조를 정의하는 데 사용되는 명령어들로 특정 구조를 생성, 변경, 삭제, 이름을 바꾸는 데이터 구조와 관련된 명령어
구성 설명
외부 스키마(External Schema) 사용자나 개발자의 관점에서 필요로 하는 데이터베이스의 논리적인 구조
개념 스키마(Conceptual Schema) 개체 간의 관계, 제약조건, 접근 권한, 무결성, 보안에 대해 정의
내부 스키마(Internal Schema) 물리적 저장 장치의 관점에서 보는 데이터베이스 구조
DDL 명령어
구분 DDL 명령어 설명
생성 CREATE 데이터베이스 오브젝트 생성하는 명령어
수정 ALTER 데이터베이스 오브젝트 변경하는 명령어
삭제 DROP 데이터베이스 오브젝트 삭제하는 명령어
TRUNCATE 데이터베이스 오브젝트 내용 삭제하는 명령어

DML

DML의 유형
유형 조작 설명
SELECT 조회 테이블 내 컬럼에 저장된 데이터를 조회
INSERT 삽입 테이블 내 칼럼에 데이터를 추가
UPDATE 갱신 테이블 내 칼럼에 저장된 데이터를 수정
DELETE 삭제 테이블 내 컬럼에 저장된 데이터를 삭제

DCL

유형 동작 설명
GRANT 사용 권한 부여 관리자(DBA)가 사용자에게 데이터베이스에 대한 권한을 부여하는 명령어
REVOKE 사용 권한 취소 관리자(DBA) 사용자에게 부여했던 권한을 회수하기 위한

Chap02. 응용 SQL

집계성 SQL

다중 행 연산자

연산자 설명
IN 리턴되는 값 중에서 조건에 해당하는 값이 있으면 참
ANY 서브쿼리에 의해 리턴되는 각각의 값과 조건을 비교하여 하나 이상을 만족하면 참
ALL 값을 서브쿼리에 의해 리턴괴는 모든 값과 조건 값을 비교하여 모든 값을 만족해야만 참
EXISTS 메인 쿼리의 비교 조건이 서브쿼리의 결과 중에서 만족하는 값이 하나라도 존재하면 참

집계 함수

집계 함수의 종류
집계 함수 내용
COUNT 복수 행의 줄 수를 반환하는 함수
SUM 복수 행의 해당 컬럼 간의 합계를 계산하는 함수
AVG 복수 행의 해당 컬럼 간의 평균을 계산하는 함수
MAX 복수 행의 해당 컬럼 중 최댓값을 계산하는 함수
MIN 복수 행의 해당 컬럼 중 최솟값을 계산하는 함수
STDDEV 복수 행의 해당 컬럼 간의 표준편차를 계산하는 함수
VARIANCE 복수 행의 해당 컬럼 간의 분산을 계산하는 함수

Chap03. SQL 활용 및 최적화

절차형 SQL

절차형 SQL 개념

절차형 SQL은 일반적인 개발 언어처럼 SQL 언어에서도 절차 지향적인 프로그램이 가능하도록 하는 트랜잭션 언어이다.

절차형 SQL 종류

종류 설명
프로시저 일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합
사용자 정의 함수 일련의 SQL 처리를 수행하고, 수행 결과를 단일 값으로 반환할 수 있는 절차형 SQL 
트리거 데이터베이스 시스템에서 삽입, 갱신 삭제 들의 이벤트가 발생할 때마다 관련 직업이 자동으로 수행되는 절차형 SQL

SQL 최적화

옵티마이저

항목 규칙기반 옵티마이저(RBO) 비용기밥 옵티마이저(CBO)
개념 통계 정보가 없는 상태에서 사전 등록된 규칙에 따라 질의 실헹 계획을 선택하는 옵티마이저 통계 정보로부터 모든 접근 경로를 고려한 질의실행 계획을 선택하는 옵티마이저
핵심 규칙(우선순위) 기반 비용(수행 시간) 기반
평가 기준 인덱스 구조, 연산자, 조건절 형태 레코드 개수, 블록 개수, 평균 행 길이, 컬럼 값의 수, 컬럼 값 분포, 인덱스 높이, 클러스터링 팩터 등등
장점 사용자가 원하는 처리경로로 유도하기가 쉬움 옵티마이저의 이해도가 낮아도 성능보장 가능
반응형