MySQL/MariaDB Select 모니터링
· Version : MySQL 5.7, Docker
MySQL 뿐만 아니라 대부분의 OLTP 성 데이터베이스에서는 SELECT의 성능이 매우 중요하다. 일반적으로 관계형 데이터베이스에서는 JOIN을 많이 사용하기 때문에 SELECT에 따른 의도하지 않은 성능 문제나 잠금 문제가 발생할 수 있기 때문에 모니터링에 우선순위를 높여야 하며 최우선으로 튜닝을 해야 하는 포인트 이기도 하다. MySQL에서 SELECT에 대한 모니터링은 아래 스크립트를 실행하여 확인할 수 있다.
show status where variable_name like ‘select%’ |
각 항목에 대해서 어떤 의미를 가지는지 살펴보자.
Variable Name |
Comment |
Select_full_join |
다중 테이블 조인 시 후행 테이블에서 전체 테이블 스캔이 발생한 횟수 |
Select_full_range_join |
다중 테이블 조인시 제한된 범위내에서 JOIN키 값을 비교한 횟수 |
Select_range |
SELECT쿼리의 범위 조건에 만족하는 레코드를 찾기 위해 제한된 범위를 디스크에서 읽은 횟수 |
Select_range_check |
Select range와 동일한 범위에서 선행 테이블의 JOIN 칼럼 데이터가 후행 테이블의 컬럼 데이터와 같은 값인지 비교하는 횟수 |
Select_scan |
전체 테이블 스캔이 발생한 횟수 |
일반적으로 Select_full_join 이 발생하면select_scan이 발생하기 때문에 두 지표 모두 값이 증가 한다. 또한 실행계획 타입에서 ALL 이 표시되면 카테시안곱이 발생한것을 의미한다. OLTP서비스에서는 Full scan은 피해야하는 항목으로 튜닝의 최우선 포인트가 된다.
기본적으로 table scan을 방지하기 위해서는 인덱스가 필요하며 JOIN 또는 Where 절에 사용되는 키 값에 대하여 인덱스를 잘 사용할 수 있도록 디자인되어야 한다.
[참고자료]
https://dev.mysql.com/doc/refman/5.6/en/show-slave-status.html
2018-04-20 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com
MySQL, select 모니터링, select_full_join, select_range, select_scan, OLTP, MySQL 모니터링
'MySQL, MariaDB' 카테고리의 다른 글
MySQL/MariaDB Table lock 모니터링 (0) | 2019.03.24 |
---|---|
MySQL/MariaDB Sort 모니터링 (0) | 2019.03.24 |
MySQL/MariaDB Replication 모니터링 (0) | 2019.03.24 |
Run the MySQL with Docker (0) | 2019.03.24 |
MySQL/MariaDB Handler 모니터링 (0) | 2019.03.24 |