서버는 쿼리문을 통해 데이터베이스와 네트워킹을 한다.
이 때, 같은 결과물이라도 쿼리문을 어떻게 짜냐에 따라 성능, 즉 클라이언트의 대기시간이 결정되고
이는 결국 어플의 존속문제에도 큰 비중을 차지한다.
같은 결과물들을 위한 다양한 방법의 쿼리문을 짜는데
각각의 쿼리문의 네트워킹 비용, 대기시간 같은 성능을 체크하는 방법 하나를 소개하겠다.
1. 네트워킹 시간 : MySQL 프로파일링.
이 기능은 각각의 쿼리문의 걸린시간들을 리스트 혹은 상세한 시간을 기록해서 보여준다.
2. 네트워킹 비용 : Last_query_cost
이 기능은 각각의 쿼리문에 드는 총 비용(cpu 용량 등)을 보여준다.
비용과 걸린 시간은 비례하지 않는다. 비용이 커도 걸린 시간은 적을 수 있다.
사용법은 이러하다.
1. 프로파일링 기능을 켠다
set session profiling = on;
2. 측정하고자 하는 쿼리문 실행
3. cost 확인
(1) 걸린 시간 보기
show profiles;
를 통해 여태까지의 쿼리문 걸린 시간들을 리스트로 보여주어 비교를 할 수 있고
show profile
를 통해 마지막 쿼리문의 걸린 시간을 상세하게 볼 수 있다.
(2) 걸린 비용 확인
SHOW STATUS LIKE 'Last_query_cost';
로 마지막쿼리문을 실행하는 데 드는 비용을 확인, 비교할 수 있다.
반응형
'인포테인먼트 - development > sql' 카테고리의 다른 글
[mysql] procedure의 인자로 배열 전달 : FIND_IN_SET (0) | 2020.04.24 |
---|---|
[MySQL] trigger란 (0) | 2020.04.15 |
[MySQL] Can't connect to local MySQL server through socket '/tmp/mysql.sock' 에러 해결 (0) | 2020.04.08 |
[MySQL] 프로시저를 사용한 cursor loop fetch 적용(sql의 for문) (0) | 2020.04.06 |
[MySQL] Insert 할 때 특정 컬럼만 select (0) | 2020.03.31 |
댓글