현재 위치: > 최신 기사 목록> mysqli :: 디버그에서 더 강력한 디버깅 도구로 전환 (예 : xdebug + mysql slow query log)

mysqli :: 디버그에서 더 강력한 디버깅 도구로 전환 (예 : xdebug + mysql slow query log)

M66 2025-05-31

매일 PHP 개발에서 MySQLI :: Debug는 일반적으로 데이터베이스 연결 프로세스 및 실행 세부 사항을보기에 사용됩니다. 디버깅 초기 단계에서는 충분할 수 있지만 프로젝트가 점차 복잡 해지면 MySQLI :: 디버그 에만 의존하면 성능 병목 현상 또는 복잡한 쿼리의 심층 분석 요구를 충족시킬 수 없습니다. 따라서이 기사를 사용하면 MySQLI :: 디버그 에서보다 강력한 디버깅 도구 인 XDEBUGMYSQL 슬로우 쿼리 로그로 원활하게 전환하는 방법을 통해 데이터베이스 디버깅 효율성을 체계적으로 개선합니다.

1. 왜 mysqli :: debug가 충분하지 않습니까?

mysqli :: debug () 의 기능은 비교적 간단합니다. MySQL 클라이언트 라이브러리 수준에서 디버그 정보 출력 만 가능하며 연결 ​​및 실행과 같은 저수준 정보를 기록하는 데 사용됩니다.

  • SQL 실행 시간은 제공되지 않습니다 .

  • 비즈니스 로직에 해당하기가 쉽지 않습니다 .

  • 출력 내용은 지저분하고 분석하기가 어렵습니다 .

  • 통화 스택 또는 메모리 사용량은 자동으로 추적 할 수 없습니다 .

샘플 코드 :

 mysqli::debug("d:t:o,/tmp/client.trace");
$db = new mysqli("localhost", "user", "password", "dbname");

/tmp/client.thrace 로 출력 할 수 있지만 읽기 및 분석은 비효율적입니다.

2. XDEBUG : 코드 수준 디버깅 + 성능 분석

Xdebug 는 PHP의 가장 강력한 디버깅 확장 중 하나이며,이 기능은 브레이크 포인트 디버깅, 기능 호출 추적 및 성능 분석과 같은 고급 기능을 구현할 수 있습니다.

XDEBUG 설치 (예 : PHP 8을 예로 들어) :

 pecl install xdebug

그런 다음 php.ini 를 추가하십시오.

 zend_extension=xdebug
xdebug.mode=develop,trace,profile
xdebug.output_dir=/tmp

프로파일 링

xdebug.mode = profile을 켜면 각 요청이 .cachegrind 파일을 생성합니다. Qcachegrind 또는 Webgrind 와 같은 도구를 사용하여 데이터베이스 쿼리 기능을 포함하여 분석 기능 실행 시간을 열 수 있습니다.

 $mysqli = new mysqli("localhost", "user", "password", "dbname");
$result = $mysqli->query("SELECT * FROM users WHERE email LIKE '%@m66.net'");

시간 소모, 통화 위치 및 Query () 의 기타 정보를 명확하게 볼 수 있으며, 이는 자주 실행되는 느린 쿼리를 문제 해결하는 데 매우 적합합니다.

3. MySQL 슬로우 쿼리 로그 : SQL 실행 효율에 중점을 둡니다.

MySQL 슬로우 쿼리 로그는 실행 시간이 지정된 임계 값을 초과하는 SQL 문을 기록하는 데이터베이스 기본 기능으로 데이터베이스 병목 현상을 분석하는 데 이상적입니다.

느린 쿼리 로그 활성화 (my.cnf 예제) :

 [mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
log_queries_not_using_indexes = 1

설정 후 MySQL 서비스를 다시 시작하십시오.

 sudo systemctl restart mysql

권장 분석 도구 :

  • mysqldumpslow : 명령 줄에서 느린 쿼리 배포를 빠르게 봅니다.

  • PT-query 소화점 : Percona Toolkit에서 제공하는 고급 분석 도구;

  • 웹 도구 : 시각적 분석을 위해 로그를 https://m66.net/analyze-log (예 : 자신이 구축 한 도구 페이지)에 로그를 업로드 할 수도 있습니다.

4. 결합 된 용도를위한 모범 사례

  1. 개발 단계 : XDEBUG를 사용하여 통화 관계 및 데이터베이스 통화를 볼 수 있습니다.

  2. 테스트 단계 : 성능 샘플링을 위해 Xdebug 프로파일 링 모드를 켭니다.

  3. 생산 단계 : MySQL 느린 쿼리 로그 및주기 분석을 켜십시오.