オブジェクトがどのくらいの頻度で使用されたかを判断するために、次のフィールドを持つテーブルを使用します。
id - objectID - timestamp
オブジェクトが使用されるたびに、IDtime()
が追加されます。これにより、オブジェクトが過去の時間/分/秒などに使用された頻度を判断できます。
1 時間後、行は役に立たなくなります (1 時間以上はチェックしていません)。ただし、主キー(auto_increment ID)を台無しにする可能性があるため、単純に行を削除するのは賢明ではないことを理解しています。
そこで、「アクティブ」というフィールドを追加しました。オブジェクトの使用頻度を確認する前に、すべてをループしてWHERE active=1
、1 時間以上経過している場合は 0 に設定します。これにより複数のユーザー間で同時実行の問題が発生するとは思いませんが、未使用のデータが大量に残ります。
active=0
新しい使用状況データを挿入する前に、フィールドがあるかどうかを確認してから、新しい行を挿入するのではなく、その行を新しいデータで更新し、アクティブを再度 1 に設定するのが最善であると考えています。ただし、これには、複数のクライアントが同じ行を更新するのを防ぐために、テーブルをロックする必要があります。
誰かこれについてもっと光を当てることができますか?