본문 바로가기
데이터베이스

데이터베이스는 어떻게 동작할까?

by 개발자doc 2024. 6. 17.
목차
1. 각각의 요소들
2. 어떻게 동작할까?

 

우리가 사용하는 데이터 베이스를 사용할 때 DBMS를 다룬다. DBMS를 다루는데 주된 코드파일만 있으면 실행이 되는 것일까? 데이터를 관리하는데 필효한 것들은 무엇일까? 한번쯤은 이런 궁금증이 들었을 것이다. 아니면 지금이라도 생각해보고 DBMS가 어떻게 돌아가는지 MYSQL을 기준으로 알아보자.

1. 각각의 요소들

1 ) mysql서버

  • SQL 인터프리터 : 전송된 SQL 쿼리를 받아 해석하고 실행하는 인터프리터
  • 옵티마이저 : 쿼리를 분석하여 최적의 실행 계획을 결정, 여러 실행계획을 검토하여 성능상 최적의 방법을 선택
  • 파서(Parser) : 쿼리를 토큰화하고 분석하여 내부적으로 데이터 구조로 변환하고 이 과정에서 문법 오류체크
  • 버퍼 풀(buffer pool) : 주 메모리 영역으로 디스크에서 읽은 데이터와 인덱스를 캐시하여 빠르게 접근

2 ) 스토리지 엔진

  • innerDB : 트랙잭션을 처리하는 기본 스토리지 엔진으로 무결과서 병행성 제어
  • MyISAM : 검색기능과 빠른 읽기를 제공하는 스토리지 엔진

3 ) 로그

  • 트랜잭션로그 : 트랜잭션의 변경을 기록하는 로그
  • 이진로그 : 쿼리 실행 내역을 기록하는 로그로 백업과 복구 등에 이용
2. 어떻게 동작할까?

우리가 단순히 쿼리라는 문자열을 입력한 것뿐인데 어떻게 데이터를 다룰 수 있는 것일까? 그 과정을 알아보자.

1 ) 전체 과정

 

2 ) 동작과정

  ① 클라이언트 요청

     - 클라이언트가 작성한 쿼리를 MYSQL서버에 요청

  ② 연결처리

     - 클라이언트의 요청을 받아 연결을 설정하고 스레드가 할당된다.

  ③ SQL파싱 (sql 파서)

     - 쿼리를 분석하여 문법에 오류가 있는지 검사하고 파스 트리 및 문법 트리를 생성한다.

     - 오류가 발견되면 오류를 반환한다.

  ④ 프리 프로세서

     - 테이블 및 컬럼 이름의 유효성을 검사하고 쿼리에 대한 권한을 검사한다.

     - 파스 트리에서 쿼리의 심볼테이블을 생성

  ⑤ 쿼리 최적화(옵티마이져)

     - 파스 트리와 심볼테이블을 사용하여 여러 실행 계획을 검토 후 최적의 방법을 선택한다.

     - 이때 조인의 순서,인덱스 사용, 비용 추정 등이 포함된다.

  ⑥ 실행계획 생성

     - 쿼리를 실행하는데 구체적인 단계를 정의한다.

  ⑦ 실행 엔진의 쿼리 실행

     - 실행 계획에 따라 스토리지 엔진과 상호작용을 하여 쿼리를 실행

     - 쿼리의 내용, 데이터의 변경이력이 

  ⑧ 로그 기록

     - 쿼리의 내용, 데이터의 변경이력이 로그에 기록된다. 

   스토리지 엔진의 명령 처리

    - 실행엔진에 따라 데이터를 처리한다.

   결과 반환 

     - 쿼리의 실행결과가 네트워크를 통해 클라이언트에 반환된다.

 

 

 

참고자료

https://velog.io/@suker80/MYSql에서의-쿼리-실행-과정

 

MYSql에서의 쿼리 실행 과정

쿼리 실행 과정에서 제일 먼저 Query Cache를 방문하게 된다.SQL 실행 결과를 메모리에 캐싱동일 SQL 실행시 이전 결과를 즉시 반환테이블의 데이터가 변경되면 캐싱된 데이터 삭제 필요캐싱 데이터

velog.io

 

 

'데이터베이스' 카테고리의 다른 글

검색결과 빨리 볼래? INDEX  (1) 2024.06.19
SQL  (0) 2024.06.12
데이터 베이스  (2) 2024.06.11