1. 今日の新規顧客の数、昨日の新規顧客の数、および今日のフォローアップ レコードの数をカウントしたいと考えています。以前に使用した方法はプラス 1 マイナス 1 です。 、しかし、エラーが頻繁に発生します。この統計的な問題を解決するにはどうすればよいですか?カウントを使用する必要がありますか?
PHP中文网2017-05-16 13:13:10
メイン データベースで大量のデータの統計を直接実行しないことをお勧めします。テーブルをロックせずに 1 を加算して 1 を減算する方法は不正確です。テーブルをロックするとパフォーマンスに影響し、カウントのパフォーマンスも低下します。
統計機能はサブシステムに分離することが推奨されており、業務サーバーはこの統計サブシステムへの顧客の追加/削除操作をメッセージキューを通じて通知します。
このサブシステムでは、統計に非常に便利な時系列データベース (オープンソース Elasticsearch など) をストレージとして使用することを検討できます。特別な時系列データベースが必要なく、mysql を直接使用する場合でも、別の mysql データベースを作成して、ロック テーブルを 1 つ増やしたり、1 つ引いたり、カウントしたりすることができます。これはメイン データベースではありません。 。
ringa_lee2017-05-16 13:13:10
自動インクリメントIDの場合は、今日の最後のIDから昨日の最後のIDを引くことで計算できます。
使用される統計テーブルはプラス 1 とマイナス 1 です
使用回数