1

MySQL データベースでバックアップされた追跡システムを実装する必要があります。システムは多くのアプリを追跡し、アプリごとに少なくとも 5 つのイベントが追跡されます (例: リンク x をクリックしたユーザー数、ページ y にアクセスしたユーザー数)。一部のアプリには何百万ものユーザーがいるため、毎秒数千の更新は大げさな仮定ではありません。システムの別のコンポーネントは、毎分更新する統計情報を計算する必要があります。システムは、これらの統計値の過去の値も記録する必要があります。

私の友人が提案したアプローチは、すべてのイベントをログ テーブルに記録し、毎分実行して必要な情報を計算し、統計テーブルを更新する cron ジョブを用意することでした。

これは私には理にかなっているように思えます。より良い代替手段はありますか?

ありがとう。

4

3 に答える 3

1

クランチするcronを使用してmysqlログテーブルにログインしました。

私は通常innodb、アプリでテーブルを使用しますが、ログ テーブルではそれを実行し、クエリmyisamを使用しました。insert DELAYED . . .

Myisam は innodb のすべての利点を提供するわけではありませんが、(そのため) わずかに高速であると思います。

主に心配しているのは、cron の実行中にデータベースがロックされることですが、「遅延挿入」を使用すると、ほとんどの場合、その問題を回避できます。

于 2010-01-07T08:38:52.407 に答える
1

ヒット率が高すぎて myisam テーブルに挿入しても処理できない場合は、最近のヒットをメモリに保持し (memcache が便利な場合や、作成できるカスタム デーモンを使用する場合があります)、メモリから定期的にヒットを処理して、データベース統計テーブル (集計)。

于 2010-01-07T08:42:06.753 に答える
0

Web サーバーからの既存のログを分析する既存のログ アナライザーを使用することを強くお勧めします。その一例がwebalizerです。私の意見では、Google アナリティクスなどの外部システムがさらに優れています。これは、ロードバランサーやキャッシュなどの中間システムで動作し続けるため、より適切に機能します.

于 2010-01-07T08:41:56.017 に答える