6

SQLクエリを本番環境でもログに記録するかどうかについてもジレンマがあります。

PHPでのファイルの書き込みがどれほど遅いかわかりません。おそらくいくつかのベンチマークがいくつかの答えを与える可能性がありますが、私はあなたたちが前にどう思うかを見たかったのです。

プロセスを遅くするものとしないものは何ですか?それとも、それは何に依存する可能性がありますか?

4

4 に答える 4

5

ほとんどのデータベースには、クエリと低速クエリをログに記録するための組み込みオプションがあるため、PHPを介してログを記録する必要はありません。問題が発生していて、トラブルシューティングプロセスの一部である場合を除いて、本番環境ですべてのクエリをログに記録しないでください。遅いクエリをログに記録して、本番サイトの速度を低下させている可能性があるものを確認できるようにする必要があります。

フレームワークがそれをサポートしている場合、ページの生成に一定の時間がかかった場合にのみクエリをログに記録できます(これが私が行うことです)。次に、条件付きでログを記録し、実行されているクエリの数が多すぎることに気付く場合があります。

于 2010-06-04T18:04:45.397 に答える
1

いくつかのオプションがあります:

  • データベースにクエリをログに記録させる
  • キャッシュされたファイルハンドルを使用して書き込む静的メソッドを使用してロガークラスを作成します。これは非常に高速です。また、このクラスを設定して、config内のログ変数を調べ、着信SQLクエリを無視するか、ファイルに記録することもできます。データベースAPIを使用していると仮定すると、クエリ関数を拡張して、(オプションの)ロギング用のこの追加のコード行を含めることができます。
于 2010-06-04T18:00:57.433 に答える
1

記録のために(DBを指定しなかった)、Postgresqlにはロギングに関連する一連のオプションがあります。その中で、log_min_duration_statementを使用して、N秒を超えて実行されたクエリをログに記録します。ログファイルを埋めたり、パフォーマンスを低下させたりすることなく、プロファイリングに役立ちます。ほとんどのデータベースには似たようなものがあるに違いありません。

于 2010-06-04T18:11:55.477 に答える
0

さて、遅くなる一番のことは、dbを打つことによるディスクIOでしょう。最善の答えは、重要なケースで試してみて(nが小さい場合はすべてが高速であることを忘れないでください)、パフォーマンスが許容できるかどうかを関係者に尋ねることです。それはあなたが求めている答えではないかもしれませんが、それは本当に最良の答えです。

于 2010-06-04T18:01:38.040 に答える