반응형
💋 인트로
MySQL 서버는 아래와 같이 구분할 수 있다.
- MySQL 엔진
- 스토리지 엔진
MySQL 서버에서 기본으로 제공하는 스토리지 엔진으로는 InnoDB, MyISAM 스토리지 엔진이 있다.
💋 MySQL 엔진 아키텍처
- MySQL은 Oracle이 만든 DBMS 소프트웨어
- 다른 DBMS와 비교했을 때 독특한 구조
조금 더 분류해서 보자!
✔ MySQL 접속 클라이언트
- MySQL 서버의 클라이언트
- Python, JDBC(Java) 등등 대부분 프로그램이 언어를 모두 지원
- 모든 언어로 MySQL 서버에서 쿼리를 사용할 수 있도록 함.
- 쉘 스크립트를 통해서도 MySQL 쿼리를 사용할 수 있음.
- MySQL 서버 = MySQL 엔진 + MySQL 스토리지 엔진
✔ MySQL 엔진
- Optimizer가 작성한 실행 계획에 따라 스토리지 엔진을 호출해 쿼리를 실행
- 클라이언트 접속과 SQL 요청 처리
- Query Parser, Query Optimizer 등으로 구성
- 이중 핵심인 Query Optimizer는 요청된 SQL문을 최적화해 실행시키기 위해서 실행 계획을 세움.
✔ MySQL 스토리지 엔진
- 데이터를 실제로 디스크 스토리지에 저장하거나, 디스크 스토리지에 저장된 데이터를 읽어오는 역할
- MySQL 엔진은 딱 1개지만, 스토리지 엔진은 여러 개를 동시에 사용할 수 있음.
- CREATE TABLE innodb_table (fd1 INT, fd2 INT) ENGINE=INNODB;
- innodb_table은 InnoDB 스토리지 엔진을 사용하도록 정의
- innodb_table에 CRUD 작업을 실행하면 InnoDB 스토리지 엔진이 처리 담당
- CREATE TABLE innodb_table (fd1 INT, fd2 INT) ENGINE=INNODB;
- 핸들러 API
- MySQL 엔진이 스토리지를 호출할 때 사용하는 API
- 이 API를 직접 구현하면, 커스텀한 스토리지 엔진을 추가할 수도 있음.
✔ 운영 체제, 하드웨어
- 실제 테이블 데이터와 로그 데이터를 파일로 저장
- 파일 시스템과 하드웨어로 구분
💋 참고자료
- https://dev.mysql.com/doc/refman/8.0/en/pluggable-storage-overview.html
- https://www.youtube.com/watch?v=vQFGBZemJLQ
반응형
'MySQL' 카테고리의 다른 글
[MySQL] MVCC와 언두 로그(Undo log) (0) | 2023.08.29 |
---|---|
[MySQL] MySQL 엔진의 락 (Lock) (0) | 2023.08.15 |
[MySQL] 트랜잭션: 트랜잭션의 개념, 주의사항, 트랜잭션 VS 락 (Real MySQL 8.0) (0) | 2023.08.13 |
[MySQL] ON DELETE CASCADE: foreign key로 묶인 테이블의 레코드를 삭제할 때, 해당 레코드를 참조하는 다른 테이블의 레코드도 함께 자동으로 삭제하기 (0) | 2023.05.08 |
[MySQL] No value supplied for the SQL parameter 'gameId': No value registered for key 'gameId’ 오류 해결 (0) | 2023.04.28 |