mysql
[DB] 풀 테이블 스캔과 인덱스 스캔
mysql 옵티마이저는 다음과 같은 조건이 일치할때 주로 풀 테이블 스캔 테이블의 레코드 건수가 너무 작아서 인덱스를 통해 읽는 것보다 풀 테이블 스캔을 하는 편이 더 빠른경우 WHERE 절이나 ON 절에 인덱스를 이용할 수 있는 적절한 조건이 없는 경우 인덱스 레인지 스캔을 사용할 수 있는 쿼리라고 하더라도 옵티마이저가 판단한 조건 일치 레코드 건수가 너무 많은 경우 강제 풀 테이블 스캔을 해야하는 경우 스트리밍 처리 mysql 스트리밍 처리 서버 쪽에서 처리할 데이터가 얼마인지에 관계없이 조건에 일치하는 레코드가 검색될 때마다 바로바로 클라이언트로 전송해주는 방식을 의미한다. 이 방식으로 쿼리를 처리할 경우 클라이언트는 쿼리를 요청하고 곧바로 원했던 첫 번째 레코드를 전달 받는다. 특징 쿼리 결과를 ..
![[DB] MySQL 내부 엔진](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd95wWR%2Fbtsqd4oHoKh%2FbESYoDd5ZxvVpTXXsgX05K%2Fimg.png)
[DB] MySQL 내부 엔진
강의를 듣던 중 MySQL 서버의 내부를 소개해주는 내용이 있어 정리하고자 한다. MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)이다. MySQL은 웹 애플리케이션을 위한 데이터베이스로 특히 많이 사용된다. MySQL 아키텍처 MySQL 엔진 내부 그러면 MySQL 엔진의 내부는 다음과 같이 쿼리 파서, 전처리기, 옵티마이저, 쿼리실행기를 거쳐서 스토리지 엔진으로 넘어간다. 해당 글에서는 MySQL 엔진 내부에서 어떠한 역할을 하는지 확인하려한다. 쿼리파서 SQL을 파싱하여 Syntax Tree를 만든다. 이 과정에서 문법 오류 검사가 이루어진다. 전처리기 쿼리파서에서 만든 Tree를 바탕으로 전처리 시작한다. 이블이나 컬럼 존재 여부, 접근권한 등 Semantic 오류 검사를 진행한..