728x90
그냥 기억 정리 글.
- MySql 엔진 아키텍처
- Mysql 서버는 크게 MySql 엔진, 스토리지 엔진으로 구분할 수 있음.
- 전체구조
- MySql 서버
- MySql 엔진
- 요청된 sql 문장을 분석하거나 최적화 하는 등 dbms 의 두뇌에 해당하는 처리를 수행
- 스토리지 엔진
- 실제 데이터를 디스크 스토리지에 저장, 디스크 스토리지로부터 데이터를 읽어오는 부분을 전담한다.
- MySql 엔진
- 핸들러 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 문을 정립시킴.
- ANSI SQL
728x90
'공부 > Mysql' 카테고리의 다른 글
[RealMysql 8.0]04아키텍처 4.2.7.5 ~ 4.2.8 (0) | 2023.01.30 |
---|---|
[RealMysql 8.0]04아키텍처 4.2.7 ~ 4.2.7.4 (0) | 2023.01.28 |
[RealMysql 8.0]04아키텍처 4.2.1 ~ 4.2.6 (0) | 2023.01.28 |
[RealMysql 8.0]04아키텍처 4.1.3 ~ 4.1.10 (0) | 2023.01.28 |
DB 인덱스는 왜 대부분 B-Tree 를 쓸까 B-Tree vs Hash..링크공유.. (2) | 2023.01.19 |
댓글