Effective-Java-Camp / real-my-sql

[DONE] Real MySQL 8.0 스터디 레포지터리
0 stars 0 forks source link

4장 아키텍처 #2

Open qkrqudcks7 opened 1 year ago

qkrqudcks7 commented 1 year ago

04. 아키텍처

MVCC( Multi Version Concurrency Control )

  1. UPDATE 요청이 들어온다.
  2. 디스크의 데이터 파일에는 변경 전 내용이 저장된다.
  3. UPDATE 문이 실행되면 커밋 여부와 관계없이 InnoDB 버퍼 풀에는 새로운 값이 들어온다.
  4. 변경 전 값만 언두 로그에 복사된다.

commit 이나 rollback이 안 된 상태에서 조회하면 어떤 값을 읽을까?

READ_UNCOMMITED

READ_COMMITTED 이상인 경우

InnoDB 버퍼 풀과 리두로그

image

clean page : InnoDB의 버퍼 풀은 디스크에서 읽은 상태로 전혀 변경되지 않은 페이지이다. dirty page : insert, update, delete 명령으로 변경된 데이터를 가진 페이지이다. LSN : log sequence number checkpoint age : 활성 리두 로그 공간의 크기

InnoDB의 버퍼 풀은 서버의 메모리가 허용하는 만큼 크게 설정하면 할수록 쿼리의 성능이 빨라진다.

그러나 메모리 공간만 단순히 늘리는 것은 데이터 캐시 기능만 향상시키는 것이다. 버퍼 풀의 쓰기 버퍼링 기능까지 향상 시키라면?

따라서

Q. InnoDB 버퍼 풀이 100GB, 리두 로그 파일의 전체 크기가 100MB인 경우

Q. InnoDB 버퍼 풀이 100MB, 리두 로그 파일의 전체 크기가 100GB인 경우

버퍼풀 크기 100GB면 리두 로그 파일은 5~10GB 수준이 적정

어댑티브 해시 인덱스

인덱스: 테이블에서 사용자가 설정한 B-Tree 인덱스

  • 사용자가 수동으로 설정하는 것이 아닌, InnoDB 스토리지 엔진에서 사용자가 자주 요청하는 데이터에 대해 자동으로 생성하는 인덱스
  • B-Tree 의 검색 시간을 줄여주기 위해 도입된 기능

B- tree , Adaptive Hash Index

B-tree

image

Adaptive Hash Index

image

cpu 사용량

image

처리량

image

주의사항

ruthetum commented 1 year ago

InnoDB가 주로 많이 사용되는 스토리지 엔진이지만 다른 스토리지 엔진도 같이 확인해보면 좋을 것 같아서 같이 보면 좋을 포스트 공유드려요. 책에도 MyISAM까지는 간단히 설명되어 있는데, Memory 엔진(혹은 TempTable)도 인지하고 있으면 좋을 것 같아요.