MySQL 엔진
표준 SQL(ANSI SQL) 문법을 지원하기 때문에 다른 DBMS(데이터베이스 관리 시스템)과 호환 가능
스토리지 엔진
핸들러 API
핸들러 요청 - 쿼리 실행기에서 데이터를 읽거나 쓰기 위해 스토리지 엔진에 요청하는 것
핸들러 API - 핸들러 요청에서 사용되는 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;
포그라운드 스레드(클라이언트 스레드)
백그라운드 스레드
InnoDB의 경우 여러 가지 작업이 백그라운드에서 처리
쓰기 스레드의 경우 백그라운드에서 많은 작업을 처리하기 때문에 스레드가 많이 필요
읽기는 지연되어 처리될 수 없다. (쓰기는 가능)
MyISAM은 사용자 스레드가 쓰기 작업까지 함께 처리 - 쓰기 버퍼링 기능 사용 못함
MySQL의 메모리 공간은 크게 글로벌 영역과 로컬 메모리 영역으로 나눔
서버 시작 시 운영체제로부터 할당
글로벌 메모리 영역
보통 클라이언트 스레드의 수와 무관하게 하나의 공간만 할당
2개 이상 할당 받아도 스레드 수와 무관
모든 스레드에 의해 공유
로컬 메모리 영역
세션 메모리 영역이라고도 표현
서버상의 클라이언트 스레드가 쿼리를 처리하는 데 사용
로컬 메모리 영역의 크기를 주의해서 설정해야 함
쿼리의 용도별로 필요할 때만 공간이 할당됨