본문 바로가기

buffer2

InnoDB Doublewrite Buffer ▶ doublewrite buffer란? InnoDB의 데이터 파일에 쓰기 전에 버퍼 풀로부터 flush된 페이지를 쓰는 저장영역입니다. 만약, 페이지 쓰기 도중 갑작스런 mysqld 프로세스의 정지나 OS 이슈 등일때 Crash Recovery 를 시도하고 InnoDB는 doublewrite buffer로부터 페이지의 복사본을 찾아 복구를 수행할 수 있습니다. 비록 데이터는 doublewrite buffer에 두번 쓰여지지만, I/O 오버헤드나 I/O작업이 두배나 필요하지는 않습니다. 데이터는 doublewrite buffer에 OS에서 단일 fsync()라고 불리는 기능으로 큰 덩어리(large chunk) 순서로 쓰여집니다. (innodb_flush_method가 O_DIRECT_NO_FSYNC로 .. 2021. 1. 14.
InnoDB IN-MEMORY Structures Mysql의 InnoDB는 In-Memory 구조와 On-Disk 구조로 이루어져 있습니다. In-Memory 구조 ▶ Buffer Pool InnoDB가 액세스할 때 테이블 과 인덱스 데이터를 캐시하는 메인 메모리영역입니다. 해당 영역은 메모리로부터 데이터를 직접 처리할 수 있게하여 처리속도를 향상시킵니다. dedicated server의 경우, 물리 메모리의 최대 80%까지 버퍼풀이 할당됩니다. 효과적으로 읽기 작업을 하기 위해서 버퍼 풀은 여러 행을 보유할 수 있는 페이지들로 나눠집니다. 효과적으로 캐시 관리를 하기위해 버퍼 풀은 링크된 페이지들의 목록으로 구현됩니다. LRU알고리즘으로 관리되어 자주 사용하지 않는 데이터는 age out(삭제) 됩니다. - LRU 알고리즘 버퍼 풀은 LRU(leat.. 2021. 1. 12.