오퍼링 > 소프트웨어 테크놀로지 서비스 > 오픈소스 SW > DBMS > 자료실

오픈소스 SW 자료실 - DBMS

오픈소스 DBMS 관련 기술서비스 정보 및 자료를 제공합니다.

[FAQ/MariaDB] long_query_time 시스템 변수 값을 변경 후 반영이 되지 않습니다

2021.02.19

Question


운영쪽에 slow log 가 너무 많이 쌓여서 long_query_time을 1에서 3으로 변경하였습니다.
하지만 변경 후에도 slow log의 query_time을 보면 3초 이하의 쿼리들이 지속적으로 기록되고 있습니다.

변경한 long_query_time이 서버에 반영되게 하려면 어떻게 해야 하나요?

 




Answer


long_query_time 시간을 변경하였음에도 불구하고 3초 이하의 slow query들이 로그에 기록된 것은 기존의 세션들 때문인 것으로 보입니다.

말씀해주신 것처럼 set global long_query_time=3; 으로 설정하였다면 아래의 테스트 케이스처럼 변경 이후 새롭게 생성된 세션들만 변경된 값이 반영되기 때문입니다.

[세션 #1]
3초 이하의 slow query들이 로그에 기록된 것은 기존의 세션들 때문인 것_세션1

[세션 #2]
3초 이하의 slow query들이 로그에 기록된 것은 기존의 세션들 때문인 것_세션2

global 변수를 변경하더라도 session 변수는 여전히 유지됨을 볼 수 있습니다.

[세션 #1]
global 변수를 변경하더라도 session 변수는 여전히 유지됨을 볼 수 있습니다._세션1

마찬가지로 기존의 다른 세션 역시 session 변수는 여전히 유지됨을 볼 수 있습니다.

[세션 #3 - 신규]
새롭게 생성된 세션에서는 위와 같이 session 변수 값이 global 변수의 값과 일치

새롭게 생성된 세션에서는 위와 같이 session 변수 값이 global 변수의 값과 일치함을 확인할 수 있습니다.

 

결국 새롭게 생성되는 세션들에 대해서는 3초로 정상적으로 설정되었을 것으로 판단되며 새롭게 접속을 하여 아래의 쿼리 중 3.5초 간 수행되는 쿼리만 로그에 남는 지 확인해 보시면 될 것 같습니다.

log_slow_rate_limit 변수를 사용하시면 로그되는 중복 쿼리의 양을 비율로 줄일 수 있습니다.

참고로 log_slow_rate_limit 변수를 사용하시면 로그되는 중복 쿼리의 양을 비율로 줄일 수 있습니다.
현재는 log_slow_rate_limit=1로 설정되어 모든 쿼리를 기록하고 있습니다.