synch/mutex/innodb/buf_pool_mutex - Amazon Aurora

synch/mutex/innodb/buf_pool_mutex

synch/mutex/innodb/buf_pool_mutex 이벤트는 메모리의 페이지에 액세스하기 위해 스레드가 InnoDB 버퍼 풀에서 잠금을 획득한 경우 발생합니다.

관련 엔진 버전

이 대기 이벤트 정보는 다음 엔진 버전에서 지원됩니다.

  • Aurora MySQL 버전 2

컨텍스트

buf_pool 뮤텍스는 버퍼 풀의 제어 데이터 구조를 보호하는 단일 뮤텍스입니다.

자세한 내용은 MySQL 설명서의 성능 스키마를 사용하여 InnoDB 뮤텍스 대기 모니터링을 참조하세요.

대기 증가의 가능한 원인

이는 워크로드별 대기 이벤트입니다. 상위 대기 이벤트에 나타나는 synch/mutex/innodb/buf_pool_mutex에 대한 일반적인 원인은 다음과 같습니다.

  • 버퍼 풀 크기는 작업 중인 데이터 세트를 보유하기에 충분하지 않습니다.

  • 워크로드는 데이터베이스의 특정 테이블의 특정 페이지에 보다 구체적으로 지정되므로 버퍼 풀에서 경합이 발생할 수 있습니다.

작업

대기 이벤트의 원인에 따라 다른 작업을 권장합니다.

이벤트를 일으키는 세션 및 쿼리 식별

일반적으로 보통 로드에서 중요 로드까지 있는 데이터베이스에는 대기 이벤트가 있습니다. 성능이 최적이면 대기 이벤트가 허용될 수 있습니다. 성능이 최적이 아닌 경우 데이터베이스가 가장 많은 시간을 소비하는 위치를 확인합니다. 가장 높은 로드를 일으키는 대기 이벤트를 살펴보고 데이터베이스와 애플리케이션을 최적화하여 이러한 이벤트를 줄일 수 있는지 확인합니다.

AWS 관리 콘솔에서 상위 SQL 차트를 보려면
  1. https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 성능 개선 도우미을 선택합니다.

  3. DB 인스턴스를 선택합니다. DB 인스턴스에 대한 성능 개선 도우미 대시보드가 표시됩니다.

  4. 데이터베이스 로드(Database load) 차트에서 대기별 조각(Slice by wait)을 선택합니다.

  5. 데이터베이스 로드(Database load) 차트에서 상위 SQL(Top SQL)을 선택합니다.

    차트에는 로드에 책임이 있는 SQL 쿼리가 나열됩니다. 목록의 맨 위에 있는 쿼리가 가장 큰 책임이 있습니다. 병목 현상을 해결하려면 다음 명령문에 집중하세요.

성능 개선 도우미를 통한 문제 해결의 개요는 블로그 게시물, 성능 개선 도우미를 통해 Amazon Aurora MySQL 워크로드 분석을 참조하세요.

성능 개선 도우미 사용

이 이벤트는 워크로드와 관련이 있습니다. 성능 개선 도우미를 사용하여 다음을 수행할 수 있습니다.

  • 대기 이벤트가 시작되는 시점과 애플리케이션 로그 또는 관련 소스에서 해당 시점에 워크로드가 변경되었는지 여부를 식별합니다.

  • 이 대기 이벤트를 담당하는 SQL 문을 식별합니다. 쿼리의 실행 계획을 검토하여 이러한 쿼리가 최적화되고 적절한 인덱스를 사용하는지 확인합니다.

    대기 이벤트를 담당하는 상위 쿼리가 동일한 데이터베이스 객체 또는 테이블과 관련이 있는 경우 해당 객체 또는 테이블을 분할하는 것이 좋습니다.

Aurora 복제본 생성

Aurora 복제본을 생성하여 읽기 전용 트래픽을 처리할 수 있습니다. Aurora Auto Scaling을 사용하여 읽기 트래픽의 서지를 처리할 수도 있습니다. Aurora 복제본에서 예약된 읽기 전용 작업과 논리적 백업을 실행해야 합니다.

자세한 내용은 Aurora 복제본을 사용하는 Amazon Aurora Auto Scaling 섹션을 참조하세요.

버퍼 풀 크기 검사

innodb_buffer_pool_wait_free 지표를 검토하여 버퍼 풀 크기가 워크로드에 충분한지 확인합니다. 이 지표 값이 높고 지속적으로 증가하는 경우는 버퍼 풀의 크기가 작업 로드를 처리하기에 충분하지 않음을 나타냅니다. innodb_buffer_pool_size가 제대로 설정된 경우 innodb_buffer_pool_wait_free의 값은 작아야 합니다. 자세한 내용은 MySQL 설명서의 Innodb_buffer_pool_wait_free를 참조하세요.

DB 인스턴스에 세션 버퍼 및 운영 체제 작업을 위한 메모리가 충분한 경우 버퍼 풀 크기를 늘립니다. 그렇지 않으면 DB 인스턴스를 더 큰 DB 인스턴스 클래스로 변경하여 버퍼 풀에 할당할 수 있는 추가 메모리를 가져옵니다.

참고

Aurora MySQL은 구성된 innodb_buffer_pool_size에 따라 innodb_buffer_pool_instances 값을 자동으로 조정합니다.

전역적 상태 이력 모니터링

상태 변수의 변경률을 모니터링하여 DB 인스턴스에서 잠금 또는 메모리 문제를 감지할 수 있습니다. 아직 켜져 있지 않은 경우 전역적 상태 이력(GoSH)을 켭니다. GoSH에 대한 자세한 내용은 전역적 상태 이력 관리를 참조하세요.

상태 변수를 모니터링하기 위해 사용자 지정 Amazon CloudWatch 지표를 생성할 수도 있습니다. 자세한 내용은 사용자 지정 지표 게시를 참조하세요.