본문 바로가기
공부/Mysql

[RealMysql 8.0]04아키텍처 4.1 ~ 4.1.2.2

by 띵커베르 2023. 1. 28.
728x90

그냥 기억 정리 글.

  • MySql 엔진 아키텍처
  • Mysql 서버는 크게 MySql 엔진, 스토리지 엔진으로 구분할 수 있음. 
    • 전체구조 
    • MySql 서버
      • MySql 엔진
        • 요청된 sql 문장을 분석하거나 최적화 하는 등 dbms 의 두뇌에 해당하는 처리를 수행
      • 스토리지 엔진
        • 실제 데이터를 디스크 스토리지에 저장, 디스크 스토리지로부터 데이터를 읽어오는 부분을 전담한다.
    • 핸들러 API
      • mysql 엔진의 쿼리 실행기에서 데이터를 쓰거나 읽어야 할 때, 각 스토리지 엔진에 쓰기, 읽기를 요청하는데 이러한 요청을 핸들러 요청이라하고, 여기서 사용되는 api를 핸들러 api 라고 한다.
    • mysql 스레딩 구조
      • mysql 서버는 프로세스 기반이 아니라 스레딩 기반으로 작동, 크게 1.포그라운드 스레드, 2.백그라운드 스레드 로 나뉨
      • 포그라운드 스레드
        • mysql 서버에 접속된 클라이언트의 수만큼 존재, 주로 요청하는 쿼리 문장을 처리.
        • 작업을 마치고 커넥션을 종료하면 스레드 캐시로 돌아간다.최대 스레드 개수는 thread_cache_size 시스템 변수로 설정할 수 있다.
        • 일반적인 방식으로는 MyISAM 테이블은 디스크 쓰기 작업까지 포그라운드로 처리하지만 InnoDb 테이블은 데이터 버퍼나 캐시까지만 포그라운드 스레드가 처리, 나머지 버퍼로부터 디스크까지 기록하는 작업은 백그라운드 스레드가 처리한다.
      • 백그라운드 스레드
        • 로그를 디스크로 기록, InnoDb 버퍼 풀의 데이터를 디스크에 기록, 데이터를 버퍼로 읽는, 잠금 또는 데드락을 모니터링하는 등의 처리
        • MySql 5.5 버전부터 데이터 쓰기 스레드, 읽기 스레드를 2개 이상 지정할 수 있다.
        • 사용자 요청 처리시 쓰기 작업은 지연될 수 있지만, 읽기 작업은 절대 지연될 수 없다.
        • InnoDb 는 쓰기 작업을 버퍼링해서 일괄 처리할 수 있지만, MyISAM 은 그렇지 않고 사용자 스레드가 쓰기 작업까지 함께 처리하도록 설계됨.
    • 그 외 
      • ANSI SQL
        • DBMS 별로 다른 SQL 문법을 사용하므로, 미국표준협회 에서 표준 SQL 문을 정립시킴.
728x90

댓글