SQL의 실행과 로깅 과정

Lee Yechan·2023년 8월 6일

CS - 데이터베이스

목록 보기
1/1
post-thumbnail

SQL 문장 실행 과정

user process로부터 SQL문을 받은 server process는 다음의 과정들을 거쳐 SQL문을 실행한다.

  • parsing: 문법 검사, 의미 검사(올바른 속성, 테이블 이름인지, 등), 권한 검사를 수행한다. Data dictionary 등을 참고해 실행계획을 만든다.
  • translation: SQL query를 관계대수식으로 번역한다.
  • optimize: Data dictionary의 통계 정보 등을 이용해 관계대수식의 최적화를 시도한다.
  • evaluation: 가장 수행 시간이 짧을 것으로 예상되는 실행계획을 선택한다.
  • execution: 선택된 실행계획에 따라 쿼리를 실행한다. 이때, 필요한 데이터가 담긴 블록만을 데이터베이스 버퍼로 가져온다.

트랜잭션

트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위, 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다.

ACID

데이터베이스 내에서 일어나는 하나의 트랜잭션의 안정성을 보장하기 위해 필요한 네 가지 성질이다.

  • Atomocity (원자성)
    • 한 트랜잭션의 연산들이 모두 성공하거나, 모두 실패되는 성질
    • 하나의 단위로 묶여있는 여러 작업이 부분적으로 실행된다면, 데이터가 오염될 수 있음
  • Consistency (일관성)
    • 데이터베이스의 상태가 일관되어야 한다는 성질
    • 트랜잭션 이전과 이후, 데이터베이스의 상태는 이전과 같이 유효해야 한다.
  • Isolation (고립성)
    • 모든 트랜잭션은 다른 트랜잭션으로부터 독립되어야 한다는 성질
  • Durability (지속성)
    • 트랜잭션이 성공적으로 완료되어 커밋되고 나면, 해당 트랜잭션에 의한 모든 변경은 향후에 어떤 소프트웨어나 하드웨어 장애가 발생되더라도 보존되어야 한다.

Commit

트랜잭션에 대한 작업이 완전히 끝났고, 데이터베이스의 상태가 일관된 상태에 있을 때, 트랜잭션이 행한 갱신 연산이 완료된 것을 알려주는 연산이다.

Rollback

트랜잭션 처리가 비정상적으로 종료되어 데이터베이스의 일관성이 깨졌을 때, 이 트랜잭션이 행한 모든 연산을 취소(undo)하는 연산이다.

Logging

DBMS는 상태의 회복을 위해 로깅을 진행한다.

UNDO

완전하지 않거나 abort된 트랜잭션의 효과를 없애는 과정이다.

REDO

commit된 트랜잭션의 효과를 다시 적용하는 과정이다. DB에 장애 발생 시 복구에 사용될 수 있다.

Log entry

각각의 로그에는 다음과 같은 내용들이 저장된다.

  • Transaction ID
  • Object ID
  • 이전 값 (Undo에 사용된다)
  • 바뀐 값 (Redo에 사용된다)

로그들은 메모리 영역에 저장되었다가 나중에 실제 로그 파일에 쓰여질 수 있다.

references

SQL문 실행원리

SQL 동작 원리

Query Processing In DBMS With Examples

Mysql Redo / Undo Log

Database Systems (15-445/645), Carnegie Mellon University, Andy Pavlo - Lecture #19: Logging Schemes

Intro to Database Systems (15-445/645), Carnegie Mellon University, Andy Pavlo - Database Logging

트랜잭션이란

[데이터베이스] 트랜잭션의 ACID 성질

profile
이예찬

0개의 댓글