現在の位置: ホーム> 最新記事一覧> mysqli :: debugとmysqlローカルデバッグログの違いの比較

mysqli :: debugとmysqlローカルデバッグログの違いの比較

M66 2025-06-03

デバッグは、PHPアプリケーションの開発とMySQLデータベースとの対話の過程で不可欠なリンクです。特に、接続の問題を見つけたり、パフォーマンスの問題を照会したり、予期しないエラーを発見する場合、デバッグツールとログは特に重要です。一般的に言及されている2つのデバッグ方法は、mysqli :: debug()関数とmysql( general_logslow_query_logなど)を有効にするローカルデバッグログを使用することです。開発者はデータベースの動作を理解するのに役立ちますが、目的、メカニズム、詳細度が異なります。

1。Mysqli:: Debugの紹介

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クライアントの動作を表示できます。

  • サーバーの構成は不要:サーバーの許可要件は低く、共有ホスティングなどの制限された環境に適しています。

  • 接続の問題のデバッグに適しています:接続の失敗、認証障害など。

制限:

  • PHPクライアントの動作のみが記録され、MySQL内の実行の詳細を除く。

  • Mysqliを介して実行される操作のみを追跡でき、 PDOMySqlndなどの他の操作は無効です。

2。MySQLローカルデバッグログ(general_logやslow_query_logなど)

MySQLサーバー自体は、データベースの操作を記録するためのログメカニズムも提供します。その中で、 general_logslow_query_logは、最も一般的に使用される2つです。

  • 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 2番目のステートメント

主な機能と利点:

  • 記録詳細なSQL実行履歴:クエリの動作の分析と無効なクエリの識別に適しています。

  • データベースのパフォーマンスの最適化を支援します。ボトルネックは、遅いクエリログで識別できます。

  • PT-Query-Digest、MySQLワークベンチなど、パフォーマンス分析ツールと統合できます

制限:

  • データベース管理者の権限が必要です。

  • 特にgeneral_logがオンになっている場合、パフォーマンスに影響を与える可能性があります。

3。それらの比較と推奨される使用シナリオ

機能/ツールmysqli :: debug() MySQLローカルデバッグログ
位置PHPクライアントMySQLサーバー側
記録可能なコンテンツクライアント関数呼び出し、接続の詳細すべてのSQLステートメント実行レコード、スロークエリ
許可要件を有効にします低い高(サーバーの許可が必要)
パフォーマンスの影響非常に低い中から高(ログタイプに応じて)
推奨される使用シナリオPHPサイドのデバッグと開発環境データベースのパフォーマンス分析、生産環境ログトラッキング

要約します

MySqli :: Debug()は、PHPアプリケーション開発のデバッグフェーズにより適しており、データベース接続の問題の問題やクライアントの動作の理解に特に役立ちます。 MySQLのローカルデバッグログは、サーバー側のSQL実行の詳細にもっと注意を払います。これは、データベースのパフォーマンスを最適化し、問題の根本原因を見つけるために特に重要です。

理想的なアプローチは、2つを組み合わせて使用​​することです。MySqli :: debug()を使用して、ローカル開発中にコールプロセスをキャプチャし、テストまたは生産環境でMySQLを有効にするログシステムで詳細な分析を実施します。これにより、クライアントからサーバーへの完全なデバッグチェーンを形成し、問題のあるポジショニングの効率を大幅に改善できます。