ユーザーがかなりの数の投稿を表示できるサイトがあります。これが完了するたびに、 のようなクエリを実行しますUPDATE table SET views=views+1 WHERE id = ?
。ただし、このアプローチにはいくつかの欠点があります。
- ページビューがいつ発生したかを追跡する方法はありません。単純に増分されます。
- 私が理解している限り、テーブルを更新すると、行の MySQL キャッシュがクリアされることが多いため、その行の次の SELECT が遅くなります。
object_views { object_id, year, month, day, views }
したがって、各オブジェクトに 1 つの行 pr があるように、テーブルを作成するアプローチを採用することを検討します。この表の日。次に、テーブルのビュー列を定期的に更新して、objects
高価な結合を常に行う必要がないようにします。
これは私が考えることができる最も簡単な解決策であり、パフォーマンスへの影響が最も少ない解決策でもあるようです。同意しますか?
(サイトは PHP 5.2、Symfony 1.4、および Doctrine 1.2 で構築されています)
編集:
目的はウェブ分析ではありません-私はそれを行う方法を知っており、それはすでに実施されています。次の 2 つの目的があります。
- 今日や昨日など、特定のオブジェクトが表示された回数をユーザーが確認できるようにします。
- サイトのモデレーターが、Google アナリティクスや Omniture などのソリューションにアクセスせずに、簡単なビュー統計を表示できるようにします。さらに、バックエンドの結果はリアルタイムである必要があり、現時点では GA が提供できない機能です。Analytics API を使用して使用状況データを取得したくありません (リアルタイムではなく、GA には JavaScript が必要です)。