3

MYSQL データベースから負荷と使用状況の統計を取得するために、現在の PHP アプリケーションに将来実装するためのロギング システムの開発を開始しようとしています。

統計は後で、1 秒あたりのデータベース呼び出し、クエリ時間などに関する情報を取得するために使用されます。

もちろん、これはアプリがテスト段階にある場合にのみ使用されます。

ただし、現在の私の最大の疑問は、MYSQL を使用してクエリをログに記録するか、ファイルベースのシステムを使用するかです。ファイルベースのシステムを使用してログを処理するときに、複数の場所からの書き込みを許可するものを作成するのは少し頭痛の種になると思いますか?

どのようにしますか?

4

5 に答える 5

5

すべてのクエリを含むクライアント アクティビティを表示する一般的なログを使用します。

http://dev.mysql.com/doc/refman/5.1/en/query-log.html

各クエリの所要時間に関する非常に詳細な統計が必要な場合は、long_query_time を 0 (またはその他の十分に短い時間) に設定してスロー ログを使用します。

http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html

次に、http://www.maatkit.org/を使用して、必要に応じてログを分析します。

于 2010-01-28T18:40:26.377 に答える
3

興味があるのが長期の非リアルタイム分析だけである場合は、MySQLの通常のクエリログをオンにします。クエリログ(通常のクエリと低速クエリの両方)の分析を行うためのツールがたくさんあり、実行時間、返された平均行などに関する情報を提供します。探しているもののようです。

于 2010-01-28T18:36:42.013 に答える
3

MySQL にはすでにロギングが組み込まれています。マニュアルの第 5.2 章でこれらについて説明しています。The General Query Log (すべてのクエリ)、Binary Query Log (データを変更するクエリ)、Slow log (時間がかかりすぎる、またはインデックスを使用しないクエリ) に興味があるでしょう。

独自のソリューションを使用することを主張する場合は、すべての DB 呼び出しが通過するデータベース中間層を作成することをお勧めします。これにより、タイミングの側面を処理できます。それらをどこに書き込むかについては、devel を使用している場合はそれほど重要ではありませんが、2 番目のデータベースを使用するという考えは悪くありません。MySQL の別のインスタンス (別のマシン上、または別のポートを使用する別のインスタンス) を使用する限り、完全に別の DB を使用する必要はありません。ファイルシステムの代わりに 2 番目の MySQL インスタンスを使用します。SUM や AVG などの優れた SQL 関数をすべて取得して、データを解析できます。

于 2010-01-28T18:40:28.000 に答える
1

MySQLでテストを行う場合は、結果をなどの別のデータベースに保存する必要がありPostgresます。これにより、操作の負荷が増加することはありません。

于 2010-01-28T16:42:45.883 に答える
0

私はmacabailに同意しますが、これをcronジョブと単純なスクリプトと組み合わせて、必要な統計を抽出および生成できることを追加するだけです。

于 2010-01-28T18:52:51.570 に答える