phpとmysqlを使用してWebサービスを構築していますが、各apikeyからのリクエストを(y)時間以内に(x)量に制限したいと思います。
これを実現するために、次のようなSQLステートメントを使用して、期間内に各apikeyからログに追加されたレコードをカウントします。
SELECT COUNT(*) FROM ws_account_log WHERE account_log_account_id='1' AND account_log_timestamp > DATE_SUB(now(), INTERVAL 1 HOUR)
これにより、1時間ごとのローリングカウントが得られます。これは問題ありませんが、1か月あたりのカウントに厳しい制限を設けたいと思います。たとえば、当月の初日の00:00以降に追加された行数。
ストアドプロシージャとさまざまな構文を使用した例を見てきましたが、MYSQLで機能する回答をお願いします。また、可能であれば、サービスの1つがオートコンプリート機能を提供するため、最速の実装であるため、ログテーブルはかなり大きくなります。
ありがとう