1

動画サイトをやっています。トラフィックに関する限り、それはかなり重いです。動画の視聴回数で動画をランク付けしようとしています。つまり、ビデオ A は 5.2K ビューを獲得し、B は 5k ビューを獲得するため、A は B の上にランク付けされます。

最初に、ビューのみを含むテーブルを作成しました。つまり、ビデオが表示されるたびに、タイムスタンプとビデオ ID とともに行がテーブルに挿入されます。それは恐ろしい決断でした。トラフィックが多かったため、テーブルが巨大になり、パフォーマンスに影響を与えました。これを行うより良い方法はありますか?

4

2 に答える 2

4

週数に対する特定のビデオの合計視聴回数を格納するテーブルがあります。必要に応じて作成/インクリメントするだけです。

つまり、フィールドvideo_id、week_number、およびtotal_viewsがあります。

トップ10を簡単に抽出できるように、適切なインデックス(つまり、week_number、total_views)を用意します。

cron古いデータを削除する(またはアーカイブする)仕事もあります。これにより、テーブルのサイズを管理しやすくなります。

于 2012-04-12T03:34:29.213 に答える
1

@Ed Healの答えに便乗するには、要約は間違いなくあなたが探しているものです。ただし、年間の日または週に対して増分するテーブルを設計すると、間隔が変わったときに問題が発生します。インターバルの開始時と同様に、誰もが 0 から開始します。もしあなたがインターバルの開始時にいると、事態は奇妙に見えます。

これらの統計を保持する最も効果的な方法は、末尾のピリオドを使用することです。(つまり、1 週間、過去 7 日間の動画の再生回数をカウントします。) これは、サイトのコンテンツの傾向をより正確に示しています。これを行うには、必要な後続期間の各ビデオの統計を計算する cron ジョブを定期的に実行する必要があります。要約を保存し、それらを並べ替えます。

于 2012-04-12T04:12:23.603 に答える