かなり「アクティブな」CDR テーブルがあり、最後の 5 分間については 5 分ごとにそこからレコードを選択したいと考えています。問題は、他のいくつかの列で生成された SHA ID があるため、必要なレコードの時間ウィンドウを選択するために日付でフィルター処理するタイムスタンプ フィールドだけに頼る必要があることです。
次の問題は、明らかに、スクリプトが毎回正確に秒単位で実行されることを保証できないこと、またはサーバーの壁時計が正確であること (これは問題ではありません) であり、最も重要なのは、ほぼ確実に複数のレコードが存在することです。 1 秒あたり 3 行 '2013-08-08 14:57:05' と言って、2 番目の有効期限が切れる前にもう 1 行挿入される可能性があります。
「2013-08-08 14:57:05」の時間までにレコードを取得BETWEEN '2013-08-08 14:57:05' AND '2013-08-08 15:02:05'
すると、見逃していた「2013-08-08 14:57:05」のレコードがさらに存在します。
基本的に:
- 不正確な壁掛け時計の時間
- シーケンシャル ID なし
- 毎秒複数のレコード
- クエリ実行時間
- クエリを実行する信頼できない頻度
指定されたローリング タイム ウィンドウで有効な行セットを取得できません。これらを回避する方法について何か提案はありますか?