MySQL Buffer Pool
-
이번에 Aurora MySQL을 운영하면서 겪기 쉽지 않은 상황을 경험하여 해당 내용을 공유하겠습니다. MySQL innodb 엔진의 경우 innodb_buffer_pool_size 값은 성능에 큰 영향을 미칠 수 있습니다. 서비스에서 운영하는 DB 스펙은 아래와 같습니다. db.r5.4xlarge vCPU 16 / RAM 128 엄청나게 많이 기록되고 있는 Slow Query와 IOPS 수치와 50GB의 가용 메모리... 문제가 있음을 느끼고 버퍼 풀 설정을 확인합니다. 설마 했지만 128 RAM에 innodb_buffer_pool_size 값이 5GB가 박혀있었습니다... 누가 대체 왜... 어떻게 이런 일이 발생했는지 퇴사한 기존 담당자들에게 연락을 해보지만 다들 자기는 하지 않았다는... 제가 이..
[MySQL] 과하게 작게 설정된 innodb_buffer_pool_size이번에 Aurora MySQL을 운영하면서 겪기 쉽지 않은 상황을 경험하여 해당 내용을 공유하겠습니다. MySQL innodb 엔진의 경우 innodb_buffer_pool_size 값은 성능에 큰 영향을 미칠 수 있습니다. 서비스에서 운영하는 DB 스펙은 아래와 같습니다. db.r5.4xlarge vCPU 16 / RAM 128 엄청나게 많이 기록되고 있는 Slow Query와 IOPS 수치와 50GB의 가용 메모리... 문제가 있음을 느끼고 버퍼 풀 설정을 확인합니다. 설마 했지만 128 RAM에 innodb_buffer_pool_size 값이 5GB가 박혀있었습니다... 누가 대체 왜... 어떻게 이런 일이 발생했는지 퇴사한 기존 담당자들에게 연락을 해보지만 다들 자기는 하지 않았다는... 제가 이..
2022.10.31 -
개요 MySQL은 빠른 성능을 위해 메모리 영역의 Buffer Pool을 사용합니다. 해당 영역의 구조 및 동작 방식에 대해 알아보도록 하겠습니다. Buffer Pool이란 Innodb 엔진에서 테이블이나 인덱스 데이터를 캐시 하는 메모리 영역을 말합니다. 데이터를 메모리에서 직접 액세스 하여 속도가 I/O 작업 시 속도가 빠릅니다. LRU 알고리즘 MySQL 캐시 전략은 변형된 LRU(Least Recently Used Alogorithm)를 사용하며 가장 오랫동안 참조되지 않은 페이지를 제거합니다. 단순한 LRU 알고리즘의 경우 Head 에는 가장 최근 데이터 Tail 에는 가장 오래된 데이터가 존재하며 이후 버퍼가 가득 찼을 경우 Tail에 있는 데이터를 버퍼 풀에서 제거합니다. 다만 MySQL의 ..
[MySQL] Innodb Buffer Pool 구조 및 캐시 전략개요 MySQL은 빠른 성능을 위해 메모리 영역의 Buffer Pool을 사용합니다. 해당 영역의 구조 및 동작 방식에 대해 알아보도록 하겠습니다. Buffer Pool이란 Innodb 엔진에서 테이블이나 인덱스 데이터를 캐시 하는 메모리 영역을 말합니다. 데이터를 메모리에서 직접 액세스 하여 속도가 I/O 작업 시 속도가 빠릅니다. LRU 알고리즘 MySQL 캐시 전략은 변형된 LRU(Least Recently Used Alogorithm)를 사용하며 가장 오랫동안 참조되지 않은 페이지를 제거합니다. 단순한 LRU 알고리즘의 경우 Head 에는 가장 최근 데이터 Tail 에는 가장 오래된 데이터가 존재하며 이후 버퍼가 가득 찼을 경우 Tail에 있는 데이터를 버퍼 풀에서 제거합니다. 다만 MySQL의 ..
2022.05.17