MySQL 인스턴스에 대한 더 깊은 인사이트를 얻기 위해 다음 옵션을 구성할 수 있습니다:
쓰기 문에 대한 쿼리 계획
explain_mode을(를) procedure (으)로 설정하면 모니터링 사용자에게 DML 권한을 부여하지 않고도 NRDOT Collector가 쓰기 문에 대한 EXPLAIN 계획을 수집할 수 있습니다. 설정 시 수신기는 이름이 <schema>.explain_statement인 SQL SECURITY DEFINER 프로시저를 검색합니다. 해당 프로시저가 존재하지 않거나 모니터링 사용자에게 실행 권한이 없는 경우 수신기는 inline 모드로 대체됩니다. 이 상태에서는 쓰기 문이 쿼리 계획을 수집하지 못하며, 수집기 로그에 다음 경고가 표시됩니다: unable to execute explain statement.
explain_mode을(를) procedure(으)로 설정하려면, 스키마당 한 번씩 권한이 있는 계정(예: root)으로 다음을 실행하십시오:
DELIMITER //CREATE DEFINER = 'root'@'%' PROCEDURE <YOUR_SCHEMA>.explain_statement(IN q TEXT)SQL SECURITY DEFINERBEGIN SET @nr_explain_sql = CONCAT('EXPLAIN FORMAT=JSON ', q); PREPARE nr_explain_stmt FROM @nr_explain_sql; EXECUTE nr_explain_stmt; DEALLOCATE PREPARE nr_explain_stmt;END//DELIMITER ;GRANT EXECUTE ON PROCEDURE <YOUR_SCHEMA>.explain_statement TO '<YOUR_DB_USERNAME>'@'%';GRANT EXECUTE 단계는 CALL 문을 실행하는 것 이상을 위해 필요합니다. 이 권한이 없으면 모니터링 사용자는 수신자가 존재 여부를 확인하는 데 사용하는 information_schema.ROUTINES의 프로시저를 볼 수 없습니다. GRANT EXECUTE을(를) 생략하면 프로시저가 누락된 것과 동일한 결과가 발생하며, 두 경우 모두 수신자가 inline 모드로 폴백하게 됩니다.
팁
이 설정은 스키마별로 상태를 유지합니다. 데이터베이스를 생성 또는 복원하거나 프로시저를 삭제하면 해당 스키마에 대한 쓰기 문 계획 수집이 알림 없이 비활성화되고 inline 모드로의 폴백이 트리거됩니다. SQL SECURITY DEFINER 저장 루틴은 그 안에서 PREPARE/EXECUTE 문을 통해 실행되는 동적 SQL에 정의자의 권한을 적용합니다. 이를 통해 SELECT전용 모니터링 사용자는 직접 실행 권한이 없는 문에 대한 계획을 검색할 수 있습니다.
잠금 대기 시간 추적 활성화
events_waits_current 소비자는 잠금 대기 시간 정보를 제공하지만 플랫폼별 설정이 필요합니다:
플랫폼 | 방법 | 재시작 후에도 유지됩니까? |
|---|---|---|
자체 관리형 MySQL |
(
)에서 | 네 |
AWS RDS |
| 아니요 : 재시작/장애 조치 시 재설정됩니다. 각 재시작 후 다시 실행하거나, 재연결 시 소비자를 자동으로 다시 활성화할 수 있도록 수신 사용자에게 이
을(를) 부여하십시오. |