5.4.1.4 쿼리 분석 프로브
쿼리 분석 프로브는 원래의 SQL 구문이되기 전과 문 분석 및 문 처리에 필요한 실행 모델의 결정이 완료 될 때 트리거됩니다.
query-parse-start (query) query-parse-done (status)
query-parse-start
: 문을 MySQL 쿼리 파서에 의해 해석되기 직전에 트리거됩니다. 단일 인수query
는 원래 쿼리의 전체 텍스트를 포함하는 문자열입니다.query-parse-done
: 원래 문 분석이 완료 될 때 트리거됩니다.status
는 작업의 상태를 기술하는 정수입니다.0
은 쿼리가 성공적으로 해석 된 것을 나타냅니다.1
쿼리의 분석이 실패했음을 나타냅니다.
예를 들어, 다음의 D 스크립트를 사용하여 소정의 쿼리를 분석하기위한 실행 시간을 모니터 할 수 있습니다.
#! / usr / sbin / dtrace -s #pragma D option quiet mysql * ::: query-parse-start { self-> parsestart = timestamp; self-> parsequery = copyinstr (arg0); } mysql * ::: query-parse-done / arg0 == 0 / { printf ( "Parsing % s : % d microseconds \ n", self-> parsequery ((timestamp - self-> parsestart) / 1000)); } mysql * ::: query-parse-done / arg0! = 0 / { printf ( "Error parsing % s : % d microseconds \ n", self-> parsequery ((timestamp - self-> parsestart) / 1000)); }
위의 스크립트에서 query-parse-done
에 술어를 사용하여 프로브의 상태 값에 따라 다른 출력이 생성됩니다.
스크립트를 실행하고 실행을 모니터하면 다음과 같이됩니다.
shell> ./query-parsing.d Error parsing select from t1 join (t2) on (t1.i = t2.i) order by t1.s, t1.i limit 10 : 36 ms Parsing select * from t1 join (t2) on (t1.i = t2.i) order by t1.s, t1.i limit 10 : 176 ms