ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • RDBMS 아키텍처(MySQL)
    database 2021. 2. 19. 23:50

    DB와 연결한 서버에서(spring) DB api를 이용해 쿼리를 보낸 경우를 생각해보자. 객체 간 역할 분담이 잘 되어 있다면 프로그래머는 DBMS에서 어떤 일이 벌어지는지 신경 쓸 필요가 없다. 그래도 가끔은 상상해본다.  내가 요청한 쿼리가 어떻게 처리될까? 또, 내가 요청한 쿼리가 DBMS와 협업하기에 최적의 쿼리일지 의심이 될 때도 있다.

     

     

     

    아키텍처

    큰 그림은 항상 머릿속에 담자두자.

     

    - 파서 : 요청받은 쿼리를 토큰 단위로 잘라 문법 체크를 해준다.

    - 전처리기 : 토큰 단위로 객체를 테이블 또는 내장 메서드로 매핑한다.

    - 옵티마이저 : 요청받은 쿼리의 최적화를 담당

    - 쿼리 실행기 : 핸들러를 이용해 스토리지 엔진에게 결과 요청 및 결과 사용자에게 반환

    - 스토리지 엔진 : 쿼리 실행기에게 전달받은 요청을 내부적으로 처리(IO여부 판단 등등)

     

     

    InnoDB 스토리지

    - 자동 데드락 감지 : 데드락 발생 시 롤백이 가장 적은 트랜젝션 롤백

    - Non-locking consistencd read : undo 로그를 이용해 A트랜젝션에서 레코드a에 update작업을 하고 있다면 B트랜젝션도 update완료 전의 레코드a에 접근할 수 있다.

    - InnoDB 버퍼 풀 지원 : 데이터와 인덱스를 모두 캐싱하여 쓰기 지연을 통한 배치 작업으로 성능 개선

    undo로그를 지원하여 편리한 롤백 및 유연한 트렌젝션 격리 수준 적용 가능

     

     

     

     

     

     

    'database' 카테고리의 다른 글

    JDBC Timout 이해하기  (0) 2021.05.31
    데이터베이스 기초(쿼리 위주)  (0) 2021.03.16
    트랜잭션과 트랜잭션 격리수준  (0) 2021.02.23

    댓글

Designed by Tistory.