DB 엔진 용어
1. 사용자가 DB에서 원하는 데이터를 가져오기 위해 SQL문 실행
2. 실행된 SQL문은 MYSQL 엔진에서 문법에러 체크, DB에 존재하는 테이블 대상으로 SQL문을 작성했는지 여부 등 다양한 문법 및 구문 검사 (파싱작업을 하는 파서(parser 역할)
3. 요청한 데이터를 빠르고 효율적으로 찾아가는 전략적 계획 수립(옵티마이저(optimizer 역할)
4. 스토리 엔진에 위치한 데이터까지 찾아간 뒤 해당 데이터를 MYSQL 엔진으로 전달
5. 불필요한 부분을 필터링(제거, 변경)하고 필요한 연산을 수행한 뒤 사용자에게 최종 결과 전달
스토리지 엔진
- (InnoDB, MyISAM, Memory 등) 스토리지 엔진은 사용자가 요청한 SQL문을 토대로 DB에 저장된 디스크나 메모리에서 필요한 데이터를 가져오는 역할을 수행
- 일반적으로 온라인상의 트랜잭션 발생으로 데이터를 처리하는 OLTP(online transaction processing) 환경이 대다수인 만큼 주로 InnoDB 엔진 사용
- MyISAM 엔진 : 대량의 쓰기 트랜잭션
- Memory 엔진 : 메모리 데이터를 로드하여 빠르게 읽는 효과
MYSQL 엔진
- 사용자가 요청한 SQL문을 넘겨받은 뒤 SQL 문법 검사와 적절한 오브젝트 활용검사를 하고, SQL문을 최소 단위로 분리하여 원하는 데이터를 빠르게 찾는 경로를 모색하는 역할을 수행
- 이후 스토리지 엔진으로부터 전달받은 데이터 대상으로 불필요한 데이터는 제거, 가공 및 연산하는 역할
- SQL 문의 시작 및 마무리 단계에 MYSQL 엔진이 관여하며, 스토리지 엔진으로부터 필요한 데이터만을 가져오는 핵심 역할을 담당
SQL 프로세스 용어
1. SQL문 수행
2. 파서(Parsor) : 최소 단위로 구성요소를 분리하고 해당 구성요소를 트리로 작성
- 문법 오류 검토, 최소단위는 >,<,= 등의 기호나 SQL 키워드로 분리
3. 전처리기(preprocessor) : 유효성 검증(테이블 존재 유무, 존재하지 않은 열 포함 여부, 조회 권한이 없는 테이블 조회)
4. 옵티마이저(optimizer) : 트리를 구성하는 오브젝트의 데이터를 효율적으로 가져오기 위해 시간은 적게 소요되면서도 비용이 효율적인 경로로 데이터를 검색하는 방법에 관한 실행 계획을 수립
5. 엔진 실행기(engine executor) : 스토리지 엔진을 호출하여 필요한 데이터를 가져옴
6. 원하는 결과 수신
파서(Parsor)
- MYSQL 엔진에 포함되는 오브젝트
- 사용자가 요청한 SQL문을 최소 단위로 분리하고 트리를 생성
- 트리를 만들면서 문법 검사 수행
전처리기(Preprocessor)
- MYSQL 엔진에 포함되는 오브젝트
- SQL문에 구조적인 문제가 없는지 파악
- SQL문에 작성된 테이블, 열, 함수, 뷰와 같은 오브젝트가이미 생성된 오브젝트인지, 접근 권한은 부여되어 있는지 확인하는 역할
옵티마이저(Optimizer)
- MYSQL의 핵심 엔진 중 하나
- 필요하지 않은 조건은 제거하거나 연산과정을 단순화
- 테이블 접근 순서, 인덱스 사용 여부, 정렬할 때 인덱스를 사용할지 임시테이블을 사용할지와 같은 실행 계획을 수립
엔진실행기(Engine executor)
- MYSQL 엔진과 스토리지 엔진 영역 모두에 걸치는 오브젝트
- 옵티마이저에서 수립한 실행 계획을 참고하여 스토리지 엔진에서 데이터를 가져옴
- 이후 MYSQL 엔진에서는 읽어온 데이터를 정렬하거나 조인하고, 불필요한 데이터는 필터링 처리하는 추가 작업을 진행
* 참고
'MYSQL' 카테고리의 다른 글
[MYSQL] 개념적인 튜닝 용어 (0) | 2023.06.29 |
---|---|
[MYSQL] JOIN 알고리즘 용어 (0) | 2023.06.28 |
[MYSQL] JOIN 연산방식 용어 (0) | 2023.06.27 |
[MYSQL] 서브쿼리 위치, 메인쿼리와의 관계성, 반환 결과에 따른 SQL 용어 (0) | 2023.06.26 |
[MYSQL] SQL 쿼리문 최적화 - 효율적인 쿼리를 위한 팁 (1) | 2023.05.29 |
댓글