次のクエリを使用して、MySQLDBのページビューを追跡しようとしています。
"UPDATE $table SET pageviews = pageviews + 1 WHERE page_id = 1"
これは、低から中程度のトラフィックには問題ありません。ただし、トラフィックが多い場合、DBへの書き込みが頻繁に行われると、読み取り/書き込みの競合が発生し、最終的にDBがダウンします。
Stackoverflowやその他の場所でいくつかのQAを読んだことがありますが、代わりにMongoDBが提案されています。ただし、その選択肢は利用できないため、MySQLに固執する必要があります。さらに、私はエンジン(MyISAMまたはInnoDB)を制御できません(MyISAMの場合のように、テーブルではなく行ベースのロックにより、InnoDBのパフォーマンスが向上します)。
上記のシナリオを考慮して、DBを(DBまたは他の何かで)スラッシングせずにページビューを追跡するための最良の方法は何ですか?出発点としてコードフラグメントを提供する回答を本当にいただければ幸いです(可能な場合)。
ところで、私はPHPを使用しています。
更新:@fireにはここで良い解決策があります。ただし、memcacheを使用する必要があります。私は、特定のインフラストラクチャを必要とせずに簡単に実装できるものを探しています。これは、さまざまなホスティング環境で仮想的に使用できるモジュール用です。考え直してみると、ある種のCookieまたはファイルログベースの実装が頭に浮かびます。そのような実装が実際にどのように機能するかはわかりません。それ以上の入力は大歓迎です。