라이브러리

[MYSQL_CONFIG] --log-queries-not-using-indexes - 인덱스를 사용하지 않는 쿼리 기록 설정




MySQL CONFIG - --log-queries-not-using-indexes

MySQL CONFIG 옵션 중 하나인 `--log-queries-not-using-indexes`는 MySQL 서버가 인덱스를 사용하지 않는 쿼리를 로그에 기록하는 기능입니다. 이 옵션을 사용하면 MySQL 서버가 인덱스를 사용하지 않는 쿼리의 수행 시간을 분석하고 최적화할 수 있습니다.

인덱스 사용하지 않는 쿼리란?

인덱스 사용하지 않는 쿼리는 MySQL 서버가 인덱스를 사용하지 않고 테이블의 모든 레코드를 스캔하여 데이터를 검색하는 쿼리입니다. 인덱스를 사용하지 않는 쿼리는 일반적으로 다음과 같은 경우에 발생합니다.

* WHERE 조건이 복잡하여 인덱스를 사용할 수 없는 경우
* JOIN 조건이 복잡하여 인덱스를 사용할 수 없는 경우
* ORDER BY, GROUP BY, LIMIT 등과 같은 조건이 복잡하여 인덱스를 사용할 수 없는 경우

--log-queries-not-using-indexes 옵션

`--log-queries-not-using-indexes` 옵션을 사용하면 MySQL 서버가 인덱스를 사용하지 않는 쿼리를 로그에 기록합니다. 로그 파일은 `mysql.log` 파일로 저장되며, 쿼리와 관련된 정보가 포함되어 있습니다.

로그 파일의 내용

로그 파일의 내용은 다음과 같습니다.

* 쿼리 문장
* 쿼리 수행 시간
* 인덱스 사용 여부
* 인덱스 사용 시 수행 시간

예제

다음 예제는 `--log-queries-not-using-indexes` 옵션을 사용하여 인덱스 사용하지 않는 쿼리를 로그에 기록하는 방법을 보여줍니다.

#hostingforum.kr
sql

-- 로그 파일을 생성하고 인덱스 사용하지 않는 쿼리를 로그에 기록합니다.

mysql -uroot -p -hlocalhost -P3306 --log-queries-not-using-indexes=on



-- 테이블을 생성하고 인덱스를 생성합니다.

CREATE TABLE test (

  id INT PRIMARY KEY,

  name VARCHAR(255),

  email VARCHAR(255)

);



CREATE INDEX idx_name ON test (name);



-- 인덱스를 사용하지 않는 쿼리를 수행합니다.

SELECT * FROM test WHERE name = 'John';



-- 로그 파일을 확인합니다.

tail -f mysql.log



로그 파일의 내용은 다음과 같습니다.

#hostingforum.kr


# Time: 2023-02-18 14:30:00

# User@Host: root[root] @ localhost []

# Query_time: 0.000158  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 10

use `test`;

SELECT * FROM test WHERE name = 'John';



위 예제에서 `Rows_examined` 값은 테이블의 모든 레코드를 스캔하여 데이터를 검색한 횟수를 나타냅니다. 이 값이 높다면 인덱스를 사용하지 않는 쿼리가 수행된다는 의미입니다.

결론

`--log-queries-not-using-indexes` 옵션을 사용하면 MySQL 서버가 인덱스를 사용하지 않는 쿼리를 로그에 기록할 수 있습니다. 로그 파일을 분석하여 인덱스를 사용하지 않는 쿼리의 수행 시간을 확인하고 최적화할 수 있습니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 131건 / 3 페이지

검색

게시물 검색