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 Select 모니터링  (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

+ Recent posts