DB 튜닝서비스

DB 노하우, 데이터직무, 다양한 인터뷰를 만나보세요.

DML문의 처리과정

DB 튜닝 서비스
이해
SQL문처리과정 이해
DML문의 처리과정
작성자
admin
작성일
2021-02-19 11:09
조회
1863
DML문의 처리과정
데이터베이스의 성능튜닝을 원활하게 수행하기 위해서는 DB구조에 대한 완벽한 이해는 필수적 입니다. 3가지 유형의 SQL문 처리과정을 통해 오라클 서버구조에 대해 알아 보도록 하겠습니다. 위 3가지 유형중에 한가지 유형을 선택하십시오.
DML문의 처리과정

DML(Insert,Update,Delete)문을 실행하는 과정은 SELECT문을 실행하는 과정과 조금 차이가 있습니다. 왜냐하면 테이블로부터 데이터를 읽어서 변경해야 하고 또한 변경작업 후에 COM MIT, ROLLBACK문을 통해 변경작업에 대한 종료 및 취소를 해야 하기 때문입니다. (위 그림의 "클릭" 버튼을 누르시면 "DML문의 처리과정"을 그림을 통해 이해할 수 있습니다.)

만약 COMMIT문을 실행한다면 변경된 내용을 테이블에 저장하는 별도의 과정이 필요할 것이 고 ROLLBACK문을 실행한다면 변경전의 데이터로 복구되어야 하기 때문입니다.

SQL*PLUS 툴의 SQL> 프롬프트 상에서 사용자는 UPDATE문을 작성합니다. 사용자가 엔터키(ENTER-KEY)를 누르면 UPDATE문장은 네트워크를 통해 서버 프로세스로 전송이 되고 구문분석 작업을 실행하게 됩니다. 구문분석 작업이 끝나면 데이터버퍼 캐시영역에 다른 사용자의 SQL문에 의해 해당 테이블이 이미 읽혀졌는지를 검색한 후 존재하지 않으면
  1. 해당 데이터 파일로부터 테이블을 읽고 또한, DML문 작업 시 ROLLBACK문을 실행했을 때 변경 전 데이터로 복구해 주기 위해서 언두 세그멘트를 데이터베이스로부터 읽게 됩니다.
  2. 읽혀진 테이블과 언두 세그멘트는 데이터버퍼 캐시영역에 저장되게 됩니다.
  3. 그리고, 변경하려는 행(ROW)을 다른 사용자의 또 다른 DML문으로부터 안전하게 보호될 수 있도록 잠금(LOCK)을 설정하게 되고 그 잠금 정보를 관련되는 자료사전에 저장하게 됩니다.
  4. 마지막으로, 로그버퍼 영역에는 사용자가 실행한 DML문에 의해 변경된 행의 변경 전 정보와 변경 후의 정보가 저장됩니다. 로그버퍼 영역에 모든 변경된 데이터를 저장하는 이유는 변경작업 후 COMMIT문을 실행했을 때 뜻하지 않는 상황(정전이 되어 시스템이 다운되는 경우 등)이 닥쳐 사용자의 변경작업이 미처 완료되기 전에 데이터베이스가 다운되면 데이터의 유실이 생길 수 있기 때문에 그러한 경우 데이터를 복구해 주기 위해서 로그버퍼 영역에 백업을 하는 것입니다.