Database(9)
-
InnoDB 알아보기 (In-Memory Structures - Buffer Pool)
Buffer Pool 디스크의 데이터 파일, 인덱스 정보를 메모리에 캐시해 두는 공간이다. 쓰기 작업을 버퍼링하여 일괄적으로 처리할 수 있게 해주는 버퍼 역할도 수행한다. ✔️ 버퍼 풀 크기 설정 공식 문서에 따르면 일반적으로 전체 물리 메모리의 80% 정도를 버퍼 풀에 할당한다. Real MySQL 에서는 다음과 같이 버퍼 풀의 크기를 설정할 것을 권장한다. - 운영체제의 전체 메모리 공간이 8GB 미만인 경우 50% 정도만 버퍼 풀로 설정한다. - 그 이상인 경우 전체 메모리의 50%부터 시작해서 조금씩 올려가며 최적의 값을 찾는다. - 전체 메모리 공간이 50GB 이상이라면 20~ 35GB 정도 설정한다. 버퍼 풀의 크기는 innodb_buffer_pool_size를 통해 동적으로 변경할 수 있다...
2024.01.29 -
InnoDB 알아보기 (특징과 MVCC)
InnoDB InnoDB의 구조는 다음과 같다. InnoDB는 높은 안정성과 좋은 성능을 가진 스토리지 엔진으로, MySQL 스토리지 엔진 가운데 가장 많이 사용된다. MySQL의 스토리지 엔진 중 거의 유일하게 레코드 기반 잠금을 제공한다. ☁️ 인메모리 구조 버퍼 풀 체인지 버퍼 어댑티브 해시 인덱스 로그 버퍼 ☁️ 디스크 구조 테이블 인덱스 테이블스페이스 Double Write Buffer Redo Log Undo Log InnoDB 특징 InnoDB는 다음과 같은 특징을 갖는다. PK에 의한 클러스터링 외래 키 지원 MVCC 잠금 없는 일관된 읽기 Deadlock Detection 자동화된 장애 복구 ✔️ PK에 의한 클러스터링 InnoDB의 모든 테이블은 기본적으로 PK를 기준으로 클러스터링되어..
2024.01.29 -
MySQL 아키텍처 알아보기
MySQL 구조 MySQL 전체 구조는 다음과 같다. MySQL 서버는 MySQL 엔진과 스토리지 엔진으로 나뉜다. ✔️ MySQL 엔진 MySQL 엔진은 커넥션 핸들러, SQL Parser, 전처리기, Optimizer 등을 중심으로 구성된다. 커넥션 핸들러 : 클라이언트의 접속 및 쿼리 요청을 처리 SQL Parser, 전처리기 : SQL을 분석 및 가공 Optimizer : 쿼리의 최적화 MySQL 엔진은 MySQL 서버 내에 하나만 존재한다. ✔️ 스토리지 엔진 실제 데이터를 디스크에 저장하거나 디스크로부터 읽어오는 역할을 수행한다. 하나의 MySQL 서버는 여러 스토리지 엔진을 동시에 사용할 수 있다. ✔️ 핸들러 API MySQL 엔진은 데이터의 읽기 및 쓰기 작업을 스토리지 엔진에 요청하여 ..
2024.01.29