Real MySQL 8.0 4.1장 내용 상편
MySQL 엔진
, 스토리지 엔진
으로 나누고 이를 합쳐서 MySQL 서버
로 표현Connection Pool or Connection Handler
SQL 파서
전처리기
옵티마이저
CREATE TABLE table (fd1 INT, fd2 INT) ENGINE=INNODB;
키 캐시(MyISAM SE)
, 버퍼 풀(InnoDB SE)
기능을 내장MySQL 엔진의 쿼리 실행기에서 데이터를 쓰거나 읽기 위해 스토리지 엔진에 요청을 하는데, 이 요청을 핸들러(Handler) 요청
이라 하고, 여기에 사용되는 API가 핸들러 API
이다.
SHOW GLOBAL STATUS LIKE 'Handler%';
SELECT thread_id, name, type, processlist_user, processlist_host
FROM performance_schema_threads ORDER BY type, thread_id;
스레드 풀
위 방식은 전통적인 스레드 모델로, MySQL 엔터프라이즈 에디션의 경우 스레드 풀을 사용할 수 있다. 가장 큰 차이점으로는 포그라운드 스레드의 커넥션 관리가 다르다. 전통적인 스레드 모델은 커넥션 별로 하나의 포그라운드 스레드가 할당되지만, 스레드 풀에서는 하나의 스레드가 여러 개의 커넥션 요청을 전달한다.
자세히 : Real MySQL 8.0 4.1.9절에서
스레드 풀
참조
MyISAM
은 포그라운드에서 전부 쓰기를 하지만, InnoDB
에서는 포그라운드 스레드에서 버퍼, 캐시에만 쓰기를 하고, 디스크, 인덱스 파일은 백그라운드 스레드에서 쓰기를 한다.MyISAM
은 위 방식을 위해 지연된 쓰기
를 사용할 수 있다.InnoDB
는 쓰기 작업을 버퍼링하여 일괄처리 하는 기능이 내장되어 디스크의 데이터파일로 저장될 때까지 기다리지 않아도 됨MyISAM
은 클라이언트 스레드가 쓰기 작업까지 함꼐 처리해 일반적인 쿼리는 완전히 저장될 때 까지 기다려야함Handler
앞으로 많이 보게 될 Handler란 MySQL 엔진이 스토리지 엔진을 조정하기 위한 객체이다. MySQL 내부에서
Handler_
로 시작하는상태 변수
는 Handler호출한 횟수이다.
SHOW ENGINES;
YES
: MySQL 서버에 해당하는 스토리지 엔진이 포함되어 있고, 사용 가능으로 활성화된 상태DEFAULT
: YES
와 동일하지만 필수 스토리지 엔진임 (이 엔진이 없으면 MySQL이 시작되지 않을 수 있음)NO
: 현재 MySQL 서버에 포함되지 않았음(활성화하려면 서버를 다시 빌드해야함)DISABLED
: 현재 MySQL 서버에는 포함됐지만 파라미터에 의해 비활성화된 상태 SHOW PLUGINS;
NO
의 경우 활성화를 위해 리빌드 해야하지만, 플러그인 형태의 라이브러리를 끼워넣어 스토리지 엔진을 사용할 수 있고, 업그레이드도 가능하다.# 비밀번호 검증 컴포넌트 설치
INSTALL COMPONENT 'file://component_validate_password';
# 컴포넌트 확인
SELECT * FROM mysql.component;
아니.. 형 검색하니깐 형꺼가 나왔어