디버깅은 PHP 응용 프로그램을 개발하고 MySQL 데이터베이스와 상호 작용하는 과정에서 필수 링크입니다. 디버깅 도구 및 로그는 특히 연결 문제, 성능 문제 쿼리 또는 예기치 않은 오류를 찾을 때 특히 중요합니다. 일반적으로 언급 된 두 가지 디버깅 방법은 mysqli :: debug () 함수와 MySQL ( general_log 및 slow_query_log )을 활성화하는 로컬 디버그 로그를 사용하는 것입니다. 개발자가 데이터베이스의 작동을 이해하도록 도울 수는 있지만 목적, 메커니즘 및 세부 사항이 다양합니다.
mysqli :: debug () 는 PHP MySQLI 확장자가 제공하는 정적 메소드입니다. 클라이언트 수준 디버깅 기능을 활성화하여 PHP 스크립트와 MySQL 데이터베이스 간의 상세한 통신 프로세스를 추적 할 수 있습니다. 이 디버깅 정보는 데이터베이스 서버가 아닌 클라이언트 (예 : PHP 엔진)에 의해 생성됩니다.
<?php
// 임시 파일로 디버그 로깅을 켭니다
mysqli::debug("d:t:O,/tmp/client_trace.log");
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
echo "연결이 실패했습니다: " . $mysqli->connect_error;
exit();
}
$result = $mysqli->query("SELECT * FROM users WHERE email LIKE '%@m66.net%'");
while ($row = $result->fetch_assoc()) {
print_r($row);
}
$mysqli->close();
?>
레코드 클라이언트 통화 스택 : 데이터베이스에 대한 호출 전후에 PHP 클라이언트의 동작을 볼 수 있습니다.
서버 구성이 필요하지 않습니다 : 서버 권한 요구 사항은 낮으며 공유 호스팅과 같은 제한된 환경에 적합합니다.
연결 문제를 디버깅하는 데 적합 : 연결 실패, 인증 실패 등과 같은 등.
MySQL 내부의 실행 세부 사항을 제외하고 PHP 클라이언트의 동작 만 기록됩니다.
MySQLI를 통해 수행 된 작업 만 추적 할 수 있으며 PDO 또는 MySQLND 와 같은 다른 작업은 유효하지 않습니다.
MySQL 서버 자체는 또한 데이터베이스의 작동을 기록하는 로깅 메커니즘을 제공합니다. 그중에서도 General_Log 및 slow_query_log 는 가장 일반적으로 사용되는 두 가지입니다.
general_log : 모든 실행 된 SQL 문을 기록합니다.
slow_query_log : 실행 시간이 지정된 임계 값을 초과하는 느린 쿼리를 기록합니다.
-- 열려 있는 general_log
SET global general_log = 1;
SET global general_log_file = '/var/log/mysql/general.log';
-- 열려 있는慢查询日志
SET global slow_query_log = 1;
SET global slow_query_log_file = '/var/log/mysql/slow.log';
SET global long_query_time = 2; -- 기록 실행이 초과됩니다 2 두 번째 진술
자세한 SQL 실행 기록을 기록 : 쿼리 동작을 분석하고 유효하지 않은 쿼리 식별에 적합합니다.
데이터베이스 성능을 최적화하는 데 도움이됩니다 . Slow Query Logs로 병목 현상을 식별 할 수 있습니다.
PT-Query-Figest, MySQL Workbench와 같은 성능 분석 도구와 통합 될 수 있습니다 .
데이터베이스 관리자 권한이 필요합니다.
특히 General_Log 가 켜질 때 성능에 영향을 줄 수 있습니다.
특징/도구 | mysqli :: debug () | MySQL 로컬 디버그 로그 |
---|---|---|
위치 | PHP 클라이언트 | MySQL 서버 측 |
기록 가능한 콘텐츠 | 클라이언트 기능 호출, 연결 세부 사항 | 모든 SQL 명령문 실행 레코드, 느린 쿼리 |
권한 요구 사항을 활성화합니다 | 낮은 | High (서버 권한 필요) |
성능 영향 | 매우 낮습니다 | 중간 ~ 높음 (로그 유형에 따라 다름) |
권장 사용 시나리오 | PHP 측면 디버깅 및 개발 환경 | 데이터베이스 성능 분석, 생산 환경 로그 추적 |
mysqli :: debug () 는 PHP 응용 프로그램 개발의 디버깅 단계에 더 적합하며 데이터베이스 연결 문제를 해결하거나 클라이언트 동작을 이해할 때 특히 도움이됩니다. MySQL의 로컬 디버그 로그는 데이터베이스 성능을 최적화하고 문제의 근본 원인을 찾는 데 특히 중요합니다.
이상적인 접근 방식은 두 가지를 조합하여 사용하는 것입니다. MySQLI :: Debug ()를 사용하여 지역 개발 중에 통화 프로세스를 캡처하고 테스트 또는 생산 환경에서 MySQL을 가능하게하는 로그 시스템에 대한 심층 분석을 수행하십시오. 이는 클라이언트에서 서버로의 완전한 디버깅 체인을 형성하여 문제 위치의 효율성을 크게 향상시킬 수 있습니다.