엔진 아키텍처

mysql 엔진 스토리지엔진
역할 머리 손발
구성 sql 인터페이스, sql 파서, sql 옵티마이저, 캐시&버퍼 버퍼풀 (언두,리두,체인지,데이터페이지), 로그버퍼, 각 버퍼 전용 스레드
주요 쿼리 분석, 쿼리 최적화, validation 등 데이터 핸들링
기타 cpu? io?
기타 2 group by order by등
복잡한 처리 단순 필터링 or gosemffld

thread

foreground background
역할 유저 요청 쿼리처리( 클라이언트 ) 포그라운드 스레드외 나머지 모든 작업
일정 스레드 개수를 유지시킴 - insert 버퍼 병합

memory

글로벌 세션
-테이블캐시
-innodb 버퍼풀
-innodb 어댑티브 해시인덱스
-inoodb 리두로그 버퍼 -정렬버퍼
-조인버퍼
-바이너리 로그캐시
-네트워크 버퍼
하나만 생성됌 (힙) 요청당 1개 ( 스택,세션)
요청이 너무많은 경우 메모리가 부족할수있음

inno vs myisam

innodb myisam
머리 손발
pk clustering pk 지원 (index range가 빠름) 물리 record id 사용(rowId)
트랜잭션유무 o x
용도 트랜잭션이 필요한 복잡한 기능을 지원하는 서비스 읽기 요청이 많고 변경이 없는 데이터(캐싱,검색)
비슷한거 오라클 iot ? redis?
fk 지원 o x
트랜잭션 지원 메타데이터 innodb 저장 파일에 저장
엔진특징 버퍼풀사용 키캐시 사용

데이터 사전

DB에 어떤 user가 생성되어 있는지, 어떤 스키마(데이터베이스), 테이블, 테이블에는 어떤 칼럼이 있고, 테이블 별로 데이터가 얼마나 있는지, 다른 오브젝트들이 어떻게 어떤 스키마에 종속되어 있는지 기타 등등 유저가 입력하는 데이터를 제외한 모든 정보가 들어 있는 것

pecona server의 스레드풀 플러그인은 큐를 이용해서 트랜잭션의 순서를 바꿔 같은 트랜잭션의 쿼리들을 모아서 한번에 처리하여 lock 경합을 최소화 해서 전체적인 성능을 향상시킬수있다.

Untitled

프라머리 키에 의한 클러스터링