현재 위치: > 최신 기사 목록> mysqli :: debug를 통해 느린 쿼리를 추적하는 방법

mysqli :: debug를 통해 느린 쿼리를 추적하는 방법

M66 2025-06-01

데이터베이스 쿼리의 성능은 PHP 응용 프로그램을 개발할 때 일반적인 문제입니다. 느린 쿼리는 시스템의 응답 속도에 영향을 줄뿐만 아니라 서버로드를 증가시킬 수도 있습니다. 이 문제를 효율적으로 해결하기 위해 MySQL은 강력한 디버깅 도구 인 MySQLI :: Debug를 제공하여 개발자가 SQL 쿼리의 실행을 추적하는 데 도움이 될 수 있습니다. 이 기사는 mysqli :: debug 함수를 사용하여 느린 쿼리 문제를 효과적으로 추적하고 문제를 해결하는 방법을 자세히 소개합니다.

1. mysqli :: debug 란 무엇입니까?

MySQLI :: Debug는 MySQLI Extension에서 제공하는 디버깅 방법으로 개발자 가이 기능을 통해 MySQL 연결의 디버깅 디버깅을 출력 할 수 있습니다. mysqli :: debug를 사용하면 쿼리 실행 시간, 예외가 발생했는지 여부 및보다 관련 정보를 포함하여 데이터베이스 쿼리에 대한 자세한 로그를 볼 수 있습니다.

2. mysqli :: debug를 활성화하는 방법은 무엇입니까?

mysqli :: debug를 사용하려면 먼저 mysqli 연결을 만들어야합니다. 그런 다음 mysqli :: 디버그 함수를 호출하여 디버깅 정보 캡처를 시작하십시오. 샘플 코드는 다음과 같습니다.

 <?php
// 만들다 MySQLi 연결하다
$mysqli = new mysqli("localhost", "root", "password", "database_name");

// 检查연결하다是否成功
if ($mysqli->connect_error) {
    die("연결하다失败: " . $mysqli->connect_error);
}

// 할 수 있게 하다 debug 모델
$mysqli->debug('trace');

// 쿼리를 실행하십시오
$query = "SELECT * FROM users WHERE status = 'active'";
$result = $mysqli->query($query);

// 출력 결과
if ($result) {
    while ($row = $result->fetch_assoc()) {
        echo "사용자: " . $row['name'] . "<br>";
    }
} else {
    echo "쿼리가 실패했습니다: " . $mysqli->error;
}

// 关闭연결하다
$mysqli->close();
?>

위의 코드에서 $ mysqli-> debug ( 'trace')는 디버그 모드를 활성화하고 간단한 쿼리를 수행합니다. 현재 MySQL 연결에 대한 모든 정보가 화면에 표시되어 개발자가 문제를 해결할 수 있도록합니다.

3. mysqli :: 디버그 출력 컨텐츠에 대한 설명

mysqli :: debug를 활성화하면 시스템이 많은 자세한 정보를 출력합니다. 이 정보는 잠재적 성능 병목 현상 또는 오류를 식별하는 데 도움이 될 수 있습니다. 일반적인 출력 내용에는 다음이 포함됩니다.

  • 쿼리 명령문 : 실행 된 모든 SQL 쿼리를 표시합니다.

  • 쿼리 실행 시간 : 쿼리 실행 시간이 너무 길면 느린 쿼리를 발견하는 데 도움이됩니다.

  • 오류 메시지 : 쿼리가 실패한 오류 코드 및 메시지와 같은 메시지.

  • 연결 정보 : MySQL 프로토콜, 버전 등과 같은 현재 연결에 대한 자세한 정보를 표시합니다.

4. mysqli :: debug를 사용하여 느린 쿼리를 추적하는 방법은 무엇입니까?

느린 쿼리 문제가 발생하면 mysqli :: 디버그를 통해 디버깅 정보를 캡처하고 느린 쿼리의 원인을 분석 할 수 있습니다. 단계에 따라 느린 쿼리를 분석 할 수 있습니다.

  1. 디버그 모드 활성화 : 앞에서 언급했듯이 $ mysqli-> debug ( 'trace')를 사용하여 디버깅을 활성화하십시오.

  2. 쿼리 실행 : 응용 프로그램에서 SQL 쿼리를 실행하십시오.

  3. 출력 분석 : 디버그 출력에서 ​​SQL 쿼리 및 실행 시간을 확인하십시오. 일부 쿼리가 너무 오랫동안 실행되면 느리게 표시됩니다.

  4. 최적화 된 쿼리 : 느린 쿼리의 경우 SQL 문의 복잡성, 인덱싱이 필요한지 또는 쿼리를 다른 방식으로 최적화 할 수 있는지 여부를 확인하십시오.

5. 로그 파일 분석 및 느린 쿼리와 결합

MySQL은 mySQLI :: Debug를 통한 디버그 정보 출력 외에도 느린 쿼리를 로그 파일에 로그인 할 수 있습니다. 둘 다 결합하면 느린 쿼리 문제를보다 효율적으로 분석하고 해결할 수 있습니다.

MySQL 구성 파일에서 느린 쿼리 로그를 활성화합니다.

 [mysqld]
slow_query_log = 1
slow_query_log_file = /path/to/your/slow_query.log
long_query_time = 1  # 기록이 초과됩니다 1 몇 초 만에 쿼리

이러한 방식으로 쿼리의 실행 시간이 설정 임계 값을 초과하면 MySQL은 쿼리를 로그에 기록합니다. 이 로그 파일을 정기적으로 확인하여 느린 쿼리를 찾고 최적화 할 수 있습니다.

6. 예 : 느린 쿼리 추적

MySQLI :: Debug를 사용하여 문제의 근본 원인을 빠르게 찾는 데 도움이 될 수있는 동시성 상황에서 느리게하는 쿼리가 있다고 가정합니다.

 <?php
// 만들다 MySQLi 연결하다
$mysqli = new mysqli("localhost", "root", "password", "m66_net_database");

// 할 수 있게 하다 debug 모델
$mysqli->debug('trace');

// 쿼리를 실행하십시오
$query = "SELECT * FROM orders WHERE order_date > '2023-01-01' AND status = 'pending'";
$result = $mysqli->query($query);

// 쿼리가 성공했는지 확인하십시오
if ($result) {
    while ($row = $result->fetch_assoc()) {
        echo "주문하다ID: " . $row['order_id'] . "<br>";
    }
} else {
    echo "쿼리가 실패했습니다: " . $mysqli->error;
}

// 关闭연결하다
$mysqli->close();
?>

위 코드에서 쿼리 문이 천천히 실행된다고 가정하면 MySQLI :: Debug는 성능 병목 현상을 찾는 데 도움이되는 세부 실행 정보를 제공합니다.

7. 결론

mysqli :: debug는 개발자가 느린 쿼리 문제를 추적하고 문제를 해결하는 데 도움이되는 강력한 디버깅 도구입니다. 디버그 모드를 활성화하고 출력 정보를 분석하면 느린 쿼리의 이유를 쉽게 찾아 데이터베이스 작업을 더 최적화 할 수 있습니다. MySQL의 느린 쿼리 로그를 사용하면 쿼리의 성능 병목 현상을보다 포괄적으로 이해하고 응용 프로그램의 효율적인 작동을 보장 할 수 있습니다.