카테고리 없음

SELECT, DML, COMMIT

anott 2023. 7. 2. 22:53

SELECT가 발생하는 과정

  1. 구문 분석
    • SQL 문법에 맞는지, 테이블이나 뷰 등이 존재하는지 확인한다.
    • 실행계획도 찾는다.
  2. 실행
    • 데이터베이스 버퍼 캐시에 해당 데이터가 존재하는지 확인한다. 없다면 새롭게 데이터 파일을 읽어서 데이터베이스 버퍼 캐시에 저장해놓는다.
    • INSERT, UPDATE, DELETE라면 데이터베이스 버퍼 캐시의 데이터가 바뀐다.
  3. 인출
    • 데이터베이스 버퍼 캐시에서 해당 데이터를 읽어 클라이언트 단에 출력한다.
    • INSERT, UPDATE, DELETE에서는 인출 단계가 없다.

출처 : https://dataonair.or.kr/db-tech-reference/d-story/db-tuning-service/?mod=document&uid=42394

 

 

DML이 발생하는 과정

  1. 데이터 파일로 테이블을 읽고, ROLLBACK을 위해서 데이터베이스로부터 언두 세그먼트를 읽는다. 그리고 데이터베이스 버퍼 캐시에 저장한다.
  2. 안전하게 ROW을 변경하기 위해 LOCK을 건다.
    • TX Lock(트랜잭션 Lock) - ROW LOCK
    • TL(Table Locks)
  3. 복구를 위해 리두로그 버퍼에는 DML 전후 정보가 모두 저장된다.

출처 : https://dataonair.or.kr/db-tech-reference/d-story/db-tuning-service/?mod=document&uid=42396

 

 

COMMIT이 발생하는 과정

  1. COMMIT을 입력한다.
  2. 리두로그 버퍼에는 DML 전후 데이터가 존재하는데, 그곳에 시스템 변경 번호(System Change Number)을 준다. LGWR는 리두로그 파일에 변경 데이터를 저장한다.
  3. 서버 프로세스는 유저 프로세스에게 Committed 메시지를 전송하여, 클라이언트 단에 메시지를 출력한다.
  4. 리두로그 파일이 꽉 차있다면 Log Switch가 일어난다. (라운드로빈)
  5. 체크포인트 프로세스가 컨트롤 파일과 데이터 파일의 헤드 영역에 시스템 변경 번호와 관련 상태 정보를 저장한다. → 체크포인트 이벤트
  6. DBWR가 데이터베이스 버퍼 캐시에 있는 정보를 테이블에 저장한다.

출처 : https://dataonair.or.kr/db-tech-reference/d-story/db-tuning-service/?mod=document&uid=42397