개념/정보처리기사

SQL/ 병행제어/ 로킹/ 교착상태(Dead Lock)

디벨로펄 2023. 10. 3.
반응형

SQL문

DDL - Data Definition Language
. DB, Table, View, Index 등을 정의(생성, 삭제, 갱신)할 때 사용하며, CREATE, ALTER, DROP 등이 있다.

. 도스테뷰인( Domain, Schema, Table, View, Index)

 

- 인덱스 종료

 . 순서 인덱스 : 데이터가 정렬된 순서대로 생성되는 인덱스

 . 해시 인덱스 : 해시 함수에 의해 키 값으로 접근

 . 비트맵 인덱스 : bit값인 0또는 1로 변환하여 인덱스 키로 사용

 . 함수기반 인덱스 : 수식이나 함수 적용

 . 단일 인덱스 : 하나의 컬럼으로만 구성

 . 결합 인덱스 : 두개 이상의 컬럼으로 구성

 . 클러스터드 인덱스 : 인덱스 키의 순서에 따라 데이터가 정렬되는 방식 : 검색빠름

 . 넌 클러스터드 인덱스 : 인덱스 키값만 정렬되어 있고, 실제 데이터는 정렬되지 않는 방식(데이터 삽입, 삭제 시 데이터 재졍렬해야함)
 
DCL - Data Control Language
. 데이터의 보안, 무결성, 트랜잭션 병행제어 등을 위해 사용되며
. COMMIT, ROLLBACK, GRANT, REVOKE 가 있따.
  . GRANT : 사용자에게 접속권한, 오브젝트 생성 권한, DBA 권한 등의 권한을 부여할 수 있는 명령어
  . REVOKE : 권한 회수하는 명령어
 
DML - Data Manipulation Language
. 테이블의 데이터를 조회하고 조작(삽입, 갱신, 삭제)할 때 쓰인다.
. SELECT, INSERT, DELETE, UPDATE 가 있음
 
 


 
CREATE 예시
. 학생 Table의 학과 속성값을 오름차순으로 정렬하여, 중복을 허용하지 않도록 학생_인덱스로 정의
CREATE UNIQUE INDEX 학생_인덱스 ON 학생(학과 ASC)
 
 
 
평균 : AVG(column명)
합계 : SUM(column명)
그룹핑 : GROUP BY column명, DESC, ASC
 
- 삭제 옵션
. CASCADE : 해당 테이블 참조하는 테이블도 같이 삭제
. RESTRICT : 해당 테이블 참조하는 테이블 있을 경우 삭제 취소
 
Where절과 함께 활용
- NULL값아닌거 : IS NOT NULL
- Null인거 : IS NULL
- LIKE '%길%'


병행제어 : Concurrency Control

- 트랜잭션이 병행 수행될 때, 트랜잭션이 DB의 일관성을 파괴하지 않고, 다른 트랜잭션에 영향을 주지 않도록 트랜잭션간 상호작용을 제어하는것
 
. 로킹 : 트랜잭션이 접근하려는 데이터를 다른 트랜잭션이 접근하지 못하게 '잠그는' 병행제어 기법
  - 상호 배제 기능을 제공하고, unlock하기 전까지 독점적으로 사용 가능하다.
  . 로킹단위 : 한 번에 로킹할 수 있는 데이터의 크기
    - 로킹단위가 크면 로크의 개수가 적어져 병행제어 기법이 단순해지며, 병행성 수준이 낮아지며 오버헤드가 감소한다.
    - 로킹단위 작으면 로크 개수가 많아져 병행제어 기법이 복잡해지며, 병행성 수준이 높아지며 오버헤드가 증가한다.
 

교착상태 : Dead Lock

- 여러 트랜잭션이 특정 데이터에 lock을 한 채 다른 트랜잭션이 lock을 수행한 데이터에 접근하려고 할 때 실행을 하지 못하고, 서로 무한정 기다리는 상태
 . 교착상태 발생할 수 있는 필요충분조건
  . 상호배제(Mutual Exclusion) : 한 리소스는 한 번에 한 프로세스만이 사용할 수 있다.
  . 점유와 대기(Hold and Wait) : 어떤 프로세스가 하나 이상의 리소스를 점유하고 있으면서 다른 프로셋가 가지고 있는 리소스를 기다린다.
  . 비선점(Non preemption) :  프로세스가 작업을 마친 후 리소스를 자발적으로 반환할 때까지 기다린다.
  . 환형 대기(Circular wait) : 각 프로세스는 순차적으로 다음 프로세스가 요구하는 자원을 가진다.
 
-> 교착상태 해결방안
. 예방(Prevention)
. 회피(Avoidance)
. 발견(Detection)
. 회복(Recovery)

 

 

트랜잭션

- 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본단위

특성(ACID)

. 원자성(Atomicity) : 연산 전체가 실패 또는 성공

. 일관성(Consistency) : 트랜잭션 수행 전과 수행완료 후의 상태가 같아야 하는성질

. 격리성(Isolation) : 동시에 실행되는 트랜잭션이 서로 영향을 미치지 않아야한다.

. 영속성(Durability) : 성공 완료된 트랜잭션의 결과는 영속적으로 DB에 저장되어야 하는 성질

 

트랜잭션의 상태

- 활동 : 트랜잭션이 실행중인 상태

- 실패 : 트랜잭션 실행에 오류 발생하여 중단된 상태

- 철회 : 비정상 종료되어 Rollback한 상태 

- 부분완료 : 마지막 연산까지 실행했지만, Commit연산자 실행되기 직전의 상태

- 완료 : 트랜잭션이 성공적으로 종료되어 Commit연산 실행후의 상태

반응형

'개념 > 정보처리기사' 카테고리의 다른 글

관계 해석과 관계 대수  (1) 2024.04.26
데이터 정규화(1NF, 2NF, 3NF, BCNF)  (0) 2024.04.26

댓글