MySQL 쿼리 모니터링 팁 > 그누보드5 팁자료실

그누보드5 팁자료실

MySQL 쿼리 모니터링 팁 정보

MySQL 쿼리 모니터링 팁

본문

웹사이트가 느려지거나, 랙이 발생하게 되면 보통 DB를 모니터링합니다. 뭐 대부분 db 에서 문제가 발생하기 마련입니다.

 

slow 로그를 우선 모니터링 하게 되는데, 쿼리가 실행되는 페이지나 상황이 특정되는 경우는 쿼리를 튜닝하고, 해당 페이지의 서비스 코드(예를 들어 .php 파일)의 쿼리부분을 수정하면 쉽게 장애조치가 가능합니다.

 

그러나 웹페이지에서 쿼리에 변수 몇개를 바인드하여  사용하기 때문에, 쿼리로는 페이지나 상황을  특정하기 여러운 경우가 있습니다. 이런 경우에 사용할수 있는 간단한 팁입니다.

 

MySQL은 쿼리에 주석을 추가할수 있는데, 주석에 페이지 정보나 라인을 추가합니다. (이해를 하기 쉽게 하기 위해 그누보드5를 기준으로 설명하겠습니다.)

최근 게시물이나 게시물 수를  표시하기 위해 아래와 같은 쿼리가 들어간 페이지가 있습니다.


$sql = "select count(*) from g5_board_new where …..   ";
$sql = "select * from g5_board_new where …. limit 5… ";

 

해당 쿼리가 들어간 php 파일은 찾았는데 파일수가 20개 라면,어떤 php 가 호출될때가 문제인지를 찾아야 합니다.

이때 다음과 같이 쿼리문에 주석을 추가합니다.


$sql = "select /*  ".$_SERVER['SCRIPT_NAME']." */ from g5_board_new where … ";
$sql = "select /* ".$_SERVER['SCRIPT_NAME']." */ * from g5_board_new where …. limit 5… ";

(주석 위치는 가능한 공간이면 아무곳에 넣어도 상관없습니다. 보기 좋으라고 select 다음에 넣음)

 

이제 이렇게 소스를 수정한뒤에 슬로우 쿼리를 보면, 문제가 되는 페이지를 찾을수 있습니다.

적당히 인덱스를 추가하거나, 쿼리 튜닝이 어려운 페이지인 경우에는 캐시 처리를 하면 끝.

추천
5

댓글 7개

저와같은 초보 무식자에게는 너무 좋아보이는 내용입니다만...적응하는 방법을 모르겠습니다.
예제로
쿼리체크.php 로 만들어서...사이트 어디에 넣어 준다던지 하는 기초적인 방법을 알수 있을까요?
만들어진 파일을 사이트 루트폴더에 올리고..php파일을 클릭하면 볼수있다던지...
하는 희망사항을 말씀드려봅니다.
위의 예제를 보시면 아시겠지만, 새로운 php를 만드는게 아니라, 기존에 쿼리 문장에 현재 파일명이 노출되도록 하여, 슬로우 쿼리가 발생했을때, 슬로우 쿼리 문장에서 파일 위치를 찾을수 있습니다.

병목지점을 찾는 여러가지 방법이 있습니다. 그중에서 쉽게 적용이 가능한 방법중 하나입니다.
아~~ 이해가 되었습니다.
실력이 미흡하여 바로 적용은 못하는것이 사실이지만..
나중에 문제가 발생하는 시점에서 한번 적용해 보겠습니다.
친절한 답변에 감사드립니다.
전체 30 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT