전체 글
고양이를 좋아하고 뭐든지 공유하는 것을 좋아하는 사람입니다.
-
개요 MySQL InnoDB에는 보조 인덱스 I/O 성능 향상을 위한 체인지 버퍼가 존재합니다. 해당 버퍼를 통해 어떻게 보조 인덱스 I/O 최적화가 진행되는지 알아보겠습니다. 체인지 버퍼 체인지 버퍼는 보조 인덱스 페이지가 버퍼 풀에 없을 때 변경 사항을 캐시하는 특수한 데이터 구조입니다. INSERT, UPDATE 등 DML 작업으로 인해 발생할 수 있는 버퍼링된 변경 사항은 추후 읽기 작업에 의해 페이지가 버퍼 풀에 로드될 때 병합됩니다. 클러스터형 인덱스의 경우 정렬된 순서로 삽입되는 반면 보조 인덱스의 경우 일반적으로 유니크하지 않고 정렬되지 않은 채 처리가 되기 때문에 최신 상태로 유지하기 위해서는 상당한 I/O 가 발생하게됩니다. 이러한 단점을 극복하고자 DML 작업이 발생할 경우 실시간으로..
[MySQL] Innodb Change Buffer를 통한 보조 인덱스 I/O 개선개요 MySQL InnoDB에는 보조 인덱스 I/O 성능 향상을 위한 체인지 버퍼가 존재합니다. 해당 버퍼를 통해 어떻게 보조 인덱스 I/O 최적화가 진행되는지 알아보겠습니다. 체인지 버퍼 체인지 버퍼는 보조 인덱스 페이지가 버퍼 풀에 없을 때 변경 사항을 캐시하는 특수한 데이터 구조입니다. INSERT, UPDATE 등 DML 작업으로 인해 발생할 수 있는 버퍼링된 변경 사항은 추후 읽기 작업에 의해 페이지가 버퍼 풀에 로드될 때 병합됩니다. 클러스터형 인덱스의 경우 정렬된 순서로 삽입되는 반면 보조 인덱스의 경우 일반적으로 유니크하지 않고 정렬되지 않은 채 처리가 되기 때문에 최신 상태로 유지하기 위해서는 상당한 I/O 가 발생하게됩니다. 이러한 단점을 극복하고자 DML 작업이 발생할 경우 실시간으로..
2022.05.19 -
개요 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 -
개요 Aurora DB 엔진 업그레이드 시 Aurora 2 일부 버전, Aurora 3 전체 버전에서 특정 상황을 충족할 경우 다운타임 없이 업그레이드가 가능합니다. 어떤 경우에 ZDP 가 동작하는지 알아보겠습니다. 업그레이드 전 고려 사항 허용 가능한 가동 중지 시간 업그레이드 시 다운타임으로 인해 서비스가 중단될 수 있기 때문에 실제 서비스에 허용 가능한 중단 시간을 파악해야 합니다. 특정 버그 또는 새로운 기능이 업그레이드가 필요할 만큼 중요한가 잠깐의 중단도 서비스에 중대한 영향이 있을 경우 보안 이슈로 인해 서비스에 중대한 영향이 있다면 빠른 시일 내에 업그레이드가 필요하지만 사소한 버그나 새로운 기능이 필요할 경우 당장 운영에 반영해야 할 만큼 필요한 사항인지 고려돼야 합니다. 수행할 검증 테..
[Aurora] ZDP(제로 다운타임) 엔진 업그레이드개요 Aurora DB 엔진 업그레이드 시 Aurora 2 일부 버전, Aurora 3 전체 버전에서 특정 상황을 충족할 경우 다운타임 없이 업그레이드가 가능합니다. 어떤 경우에 ZDP 가 동작하는지 알아보겠습니다. 업그레이드 전 고려 사항 허용 가능한 가동 중지 시간 업그레이드 시 다운타임으로 인해 서비스가 중단될 수 있기 때문에 실제 서비스에 허용 가능한 중단 시간을 파악해야 합니다. 특정 버그 또는 새로운 기능이 업그레이드가 필요할 만큼 중요한가 잠깐의 중단도 서비스에 중대한 영향이 있을 경우 보안 이슈로 인해 서비스에 중대한 영향이 있다면 빠른 시일 내에 업그레이드가 필요하지만 사소한 버그나 새로운 기능이 필요할 경우 당장 운영에 반영해야 할 만큼 필요한 사항인지 고려돼야 합니다. 수행할 검증 테..
2022.05.16 -
개요 Aurora MySQL 2.09 미만 버전의 경우 CloudWatch의 용량과 INFORMATION_SCHEMA의 통계 용량의 상당한 차이가 발생하는 경우가 있어 버전 업그레이드 후 용량을 테스트해보았습니다. 문제 CloudWatch의 사용된 바이트는 약 143GB인데 INFORMATION_SCHEMA는 약 58GB 입니다. Aurora의 경우 클러스터 볼륨은 128TB 까지 확장될 수 있으며 Aurora 클러스터 볼륨에 대해 사용한 공간에 대해서만 비용이 청구됩니다. Aurora 2.09 이전 버전에서는 데이터를 삭제했을 때 해당 공간은 추후에 재사용되며 이미 할당된 스토리지 공간은 줄어들지 않습니다. 이 때문에 실제 데이터를 삭제했을 경우에도 CloudWatch에서 용량이 감소하지 않고있었습니다..
[Aurora] 스토리지 용량 축소를 통한 비용 절감개요 Aurora MySQL 2.09 미만 버전의 경우 CloudWatch의 용량과 INFORMATION_SCHEMA의 통계 용량의 상당한 차이가 발생하는 경우가 있어 버전 업그레이드 후 용량을 테스트해보았습니다. 문제 CloudWatch의 사용된 바이트는 약 143GB인데 INFORMATION_SCHEMA는 약 58GB 입니다. Aurora의 경우 클러스터 볼륨은 128TB 까지 확장될 수 있으며 Aurora 클러스터 볼륨에 대해 사용한 공간에 대해서만 비용이 청구됩니다. Aurora 2.09 이전 버전에서는 데이터를 삭제했을 때 해당 공간은 추후에 재사용되며 이미 할당된 스토리지 공간은 줄어들지 않습니다. 이 때문에 실제 데이터를 삭제했을 경우에도 CloudWatch에서 용량이 감소하지 않고있었습니다..
2022.05.16 -
Aurora DB 파라미터 그룹의 경우 클러스터 또는 인스턴스에 적용할 수 있습니다. DB 파라미터 값을 수정했을 때 클러스터, 인스턴스 파라미터 그룹이 어떻게 적용되는지 알아보겠습니다. 파라미터 그룹 종류 DB 클러스터 파라미터 그룹 클러스터에 포함된 모든 인스턴스에 적용됨 DB 인스턴스 파라미터 그룹 개별 Instance에 적용됨 우선 순위 인스턴스 파라미터 값이 Default 인 경우 클러스터 파라미터 인스턴스 파라미터 인스턴스 파라미터 값이 Default 가 아닌 경우 인스턴스 파라미터 클러스터 파라미터 파라미터 그룹은 생성 시 디폴트 값이 지정되어 있습니다. 디폴트 값이 아닌 사용자 설정에 의한 값이 지정되었을 때 인스턴스 파라미터 그룹이 우선 순위를 가집니다. 반대로 인스턴스 파라미터 값은 D..
[Aurora] 파라미터 그룹 종류와 설정 시 유의 사항Aurora DB 파라미터 그룹의 경우 클러스터 또는 인스턴스에 적용할 수 있습니다. DB 파라미터 값을 수정했을 때 클러스터, 인스턴스 파라미터 그룹이 어떻게 적용되는지 알아보겠습니다. 파라미터 그룹 종류 DB 클러스터 파라미터 그룹 클러스터에 포함된 모든 인스턴스에 적용됨 DB 인스턴스 파라미터 그룹 개별 Instance에 적용됨 우선 순위 인스턴스 파라미터 값이 Default 인 경우 클러스터 파라미터 인스턴스 파라미터 인스턴스 파라미터 값이 Default 가 아닌 경우 인스턴스 파라미터 클러스터 파라미터 파라미터 그룹은 생성 시 디폴트 값이 지정되어 있습니다. 디폴트 값이 아닌 사용자 설정에 의한 값이 지정되었을 때 인스턴스 파라미터 그룹이 우선 순위를 가집니다. 반대로 인스턴스 파라미터 값은 D..
2022.05.12 -
개요 기존 RDS 모니터링 시스템의 경우 Cloud Watch의 지표를 수집하여 한정된 정보만 수집이 가능하기에 성능 지표를 수집할 수 있는 시스템이 필요했습니다. 프로메테우스의 Mysqld-exporter를 사용할 경우 MySQL 서버의 다양한 지표 수집이 가능합니다. 진행하기에 앞서 간략하게 프로메테우스에 대해 알아보겠습니다. 프로메테우스란 대상 시스템으로부터 각종 모니터링 지표를 수집하여 저장 및 검색할 수 있는 오픈 소스 시스템입니다. MSA 환경에서 다수의 시스템을 모니터링 하기 편리하며 특히 쿠버네티스의 메인 모니터링 시스템으로 사용되고 있습니다. 아래는 프로메테우스의 대표적인 특징입니다. 메트릭 키/값으로 식별되는 다차원 데이터 모델 PromQL을 사용한 유연한 쿼리 그라파나를 통한 시각화가..
프로메테우스 Aurora MySQL 성능 지표 모니터링 구성개요 기존 RDS 모니터링 시스템의 경우 Cloud Watch의 지표를 수집하여 한정된 정보만 수집이 가능하기에 성능 지표를 수집할 수 있는 시스템이 필요했습니다. 프로메테우스의 Mysqld-exporter를 사용할 경우 MySQL 서버의 다양한 지표 수집이 가능합니다. 진행하기에 앞서 간략하게 프로메테우스에 대해 알아보겠습니다. 프로메테우스란 대상 시스템으로부터 각종 모니터링 지표를 수집하여 저장 및 검색할 수 있는 오픈 소스 시스템입니다. MSA 환경에서 다수의 시스템을 모니터링 하기 편리하며 특히 쿠버네티스의 메인 모니터링 시스템으로 사용되고 있습니다. 아래는 프로메테우스의 대표적인 특징입니다. 메트릭 키/값으로 식별되는 다차원 데이터 모델 PromQL을 사용한 유연한 쿼리 그라파나를 통한 시각화가..
2022.04.09