slow-query select in table

푸른바람 C/H 2018. 4. 21. 18:42

vi /etc/my.conf
log_output = 'TABLE'

slow_query_log = 1 # 슬로우쿼리 활성화
slow_query_log_always_write_time = 1
long_query_time = 1
log_slow_verbosity = 'full'

log_slow_admin_statements # DDL쿼리도 슬로우 쿼리에 기록 
long_query_time = 0.5 # 이 변수값보다 쿼리처리가 길게 걸린다면 에러로그에 기록 
slow_query_log_file = /var/log/mysql/slow_query.log # 슬로우 쿼리 로그파일 경로
show variables like '%slow_query%';
slow_query_log                      ON
slow_query_log_always_write_time    1.000000
slow_query_log_file                 /var/log/mysql/slow-query.log
slow_query_log_timestamp_always     OFF
slow_query_log_timestamp_precision  second
slow_query_log_use_global_control   log_slow_verbosity,long_query_time

select * from mysql.slow_log;
start_time          user_host               long_query_time     lock_time   row_sent    rows_examined   db      last_insert_id  insert_id   server_id   sql_text            thread_id   
YYYY-MM-DD HH:I:S   root[root]@[x.x.x.x]    00:00:01            00:00:00    80          2               product 0               0           0           select * from ...   37

This variable can be used to specify the query execution time after which the query will be written to the slow query log. It can be used to specify an additional execution time threshold for the slow query log, that, when exceeded, will cause a query to be logged unconditionally, that is, log_slow_rate_limit will not apply to it.
이 변수는 질의가 느린 질의 로그에 쓰여지는 질의 실행 시간을 지정하는 데 사용할 수 있습니다. 초과 된 경우 쿼리가 무조건적으로 로깅되도록 느린 쿼리 로그에 대한 추가 실행 시간 임계 값을 지정하는 데 사용할 수 있습니다. 즉, log_slow_rate_limit가 적용되지 않습니다.
Specifies how much information to include in your slow log. The value is a comma-delimited string, and can contain any combination of the following values:
  • microtime : Log queries with microsecond precision.
  • query_plan : Log information about the query’s execution plan.
  • innodb : Log InnoDB statistics.
  • minimal : Equivalent to enabling just microtime.
  • standard : Equivalent to enabling microtime,innodb.
  • full : Equivalent to all other values OR’ed together without the profiling and profiling_use_getrusage options.
  • profiling : Enables profiling of all queries in all connections.
  • profiling_use_getrusage : Enables usage of the getrusage function.
저속 로그에 포함 할 정보의 양을 지정합니다. 값은 쉼표로 구분 된 문자열이며 다음 값의 조합을 포함 할 수 있습니다.
  • microtime : 마이크로 초 정밀도 쿼리 기록.
  • query_plan : 쿼리 실행 계획 정보 기록.
  • innodb : InnoDB 통계 기록.
  • minimal : microtime 동일.
  • standard : microtime,innodb 동일.
  • full : profiling, profiling_use_getrusage 없는 다른 모든옵션.
  • profiling : 모든 연결, 쿼리에서 프로파일 링 사용.
  • profiling_use_getrusage : getrusage 함수의 사용을 가능하게한다.
Specifies which variables have global scope instead of local. For such variables, the global variable value is used in the current session, but without copying this value to the session value. Value is a “flag” variable - you can specify multiple values separated by commas:
  • none : All variables use local scope
  • log_slow_filter : Global variable log_slow_filter has effect (instead of local)
  • log_slow_rate_limit : Global variable log_slow_rate_limit has effect (instead of local)
  • log_slow_verbosity : Global variable log_slow_verbosity has effect (instead of local)
  • long_query_time : Global variable long_query_time has effect (instead of local)
  • min_examined_row_limit : Global variable min_examined_row_limit has effect (instead of local)
  • all : Global variables has effect (instead of local)
로컬이 아닌 전역 범위가있는 변수를 지정합니다. 이러한 변수의 경우 전역 변수 값이 현재 세션에서 사용되지만이 값을 세션 값에 복사하지 않습니다. 값은 "플래그"변수입니다. 여러 값을 쉼표로 구분하여 지정할 수 있습니다.
  • none : 모든 변수는 로컬 범위를 사용합니다.
  • log_slow_filter : 전역 변수 log_slow_filter가 영향을 미칩니다. (로컬 대신)
  • log_slow_rate_limit : 전역 변수 log_slow_rate_limit가 적용됩니다. (로컬 대신)
  • log_slow_verbosity : 전역 변수 log_slow_verbosity가 적용됩니다. (로컬 대신)
  • long_query_time : 전역 변수 long_query_time이 적용됩니다. (로컬 대신)
  • min_examined_row_limit : 전역 변수 min_examined_row_limit가 적용됩니다. (로컬 대신)
  • all : 전역 변수가 적용됩니다. (로컬 대신)