avatar

정보처리기사 CH07. SQL 응용

2023. 03. 09.
8분

데이터베이스 기본

트랜잭션(Transaction)

인가받지 않은 사용자로부터 데이터를 보장하기 위해 DBMS가 가져야 하는 특성, 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위

트랜잭션 특성
  • 원자성(Atomicity): 트랜잭션의 연산 전체가 성공 또는 실패되어야 하는 성질 (All or Nothing)
  • 일관성(Consistency): 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 하는 성질
  • 격리성(Isolation): 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않어야 한다는 성질
  • 영속성(Durability): 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장되어야 하는 성질
트랜잭션 제어어(TCL, Transaction Control Language)

트랜잭션의 결과를 허용하거나 취소하는 목적으로 사용되는 언어

  • TCL 명령어
    • COMMIT: 트랜잭션을 메모리에 영구적으로 저장하는명령어
    • ROLLBACK: 트랜잭션 내역의 저장을 무효화시키는 명령어
    • CHECKPOINT(SAVEPOINT): ROLLBACK을 위한 시점을 지정하는 명령어

데이터 정의어(DDL: Data Definition Language)

DB를 구축하거나 수정할 목적으로 사용하는 언어

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): 인덱스의 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식 (데이터 삽입, 삭제 시 데이터 재정렬해야함)
DDL 명령어

CREATE(생성), ALTER(수정), DROP(삭제)

  • CASCADE: 제거할 요소를 참조하는 다른 모든 개체를 함께 제거
  • RESTRICT: 다른 개체가 제거할 요소를 참조중일 떄는 제거를 취소
데이터 조작어(DML: Data Manipulation Language)

저장된 데이터를 실질적으로 관리하는데 사용되는 언어

  • DML 유형: SELECT(조회), INSERT(삽입), UPDATE(수정), DELETE(삭제)
데이터 제어어(DCL: Data Control Language)

데이터의 보안, 무결성, 회복, 병행 제어등을 정의하는데 사용하는 언어

  • DCL 유형
    • GRANT: 사용 권한 부여
    • REVOKE: 사용 권한 취소

응용 SQL 작성하기

데이터 분석 함수 종류

  • 집계 함수: 여러 행 또는 테이블 전체 행으로부터 하나의 결괏값을 반환하는 함수
  • 그룹 함수: 소그룸 간의 소계 및 중계 등의 중간 합계 분석 데이터를 산출하는 함수
  • 윈도 함수: 데이터베이스를 사용한 오라인 부석 처리 용도로 사용하기 위해서 표준 SQL에 추가된 기능

절차형 SQL 활용하기

절차형 SQL(Procedural SQL)

SQL언어에서도 절차 지향적인 프로그램이 가능하도록 하는 트랜잭션 언어

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

데이터 조작 프로시저 최적화

쿼리 성능 개선: 최소의 시간으로 우너하는 결과를 얻도록 프로시저를 수정하는 작업

SQL 성능 개선 절차

문제있는 SQL식별 → 옵티마이저 통계확인 → SQL문 재구성 → 인덱스 재구성 → 실행계획 유지관리

옵티마이저(Optimizer)

SQL이 가장 효율적으로 수행되도록 최적의 경로를 찾아 주는 모듈

  • 옵티마이저 유형
    • 규칙기반 옵티마이저(RBO): 사전에 정의해둔 규칙에 의거하여 경로를 찾는 규칙 기반 옵티마이저
    • 비용기반 옵티마이저(CBO): 각 DBMS마다 고유의 알고리즘에 따라 산출되는 비용으로 최적의 경로를 찾는 비용기반 옵티마이저

힌트(Hint)

실행하려는 SQL문에 사전에 정보를 주어서 SQL문 실행에 빠른 결과를 가져오는 효과를 만드는 문법

  • 옵티마이저의 실행 계획을 원하는 대로 변경할 수 있게 한다.
  • 옵티마이저는 명시적인 힌트를 통해 실행 계획을 변경한다.