SQL 튜닝에 필요한 용어들을 거시적 관점에서 소개합니다.
DB 엔진 용어
전체 플로우
- 사용자는 DB에서 원하는 데이터를 가져오고자 SQL 문을 실행합니다.
- 실행된 SQL문은 MySQL 엔진에서 문법 에러가 있는지, DB에 존재하는 테이블 대상으로 SQL문을 작성했는지와 같은 세부 사항을 다양한 문법 및 구문으로 검사합니다. (파싱 작업을 하는 파서 역할)
- 사용자가 요청한 데이터를 바르고 효율적으로 찾아가는 전략전 계획을 수립합니다.(옵티마이저역할)
- 위를 토대로 스토리지 엔진에 위치한 데이터까지 찾아간 뒤 해당 데이터를 MySQL 엔진으로 전달합니다.
- 엔진은 전달된 데이터에서 불필요한 부분을 필터링(제거, 변경)하고 필요한 연산을 수행한 뒤 사용자에게 최종 결과를 알려준다.
스토리지 엔진
- (InnoDB, MyISAM, Memory 등) 스토리지 엔진은 사용자가 요청한 SQL문을 토대로 DB에 저장된 디스크나 메모리에서 필요한 데이터를 가져오는 역할을 수행합니다. 이후 해당 데이터를 MySQL 엔진으로 보내줍니다.
- 스토리지 엔진이 데이터를 저장하는 방식에 따라서 각각의 스토리지 엔진을 선택하여 사용할 수 있으며 필요하면 욉에서 스토리지 엔진 설치 파일을 가져와 활성하여 즉시 사용할 수 있다.
- 일반적으로 온라인상의 트랜잭션 발생으로 데이터를 처리하는 OLTP(online transaction processing)환경이 대다수인 만큼 주로 InnoDB 엔진을 사용함
- 대량으로 쓰기 트랜잭션이 발생하면 MyISAM 엔진, 메모리 데이터를 로드하여 빠르게 읽는 효과를 내려면 Memory 엔진을 사용하는 식으로 응용하여서 스토리지 엔진을 선택할 수 있다.