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 |
댓글