mysql - php如何设计或实现数据统计
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 12:02:55
0
7
613

想实现数据的一些统计,比如用户多种积分,发帖数,评论数等等,版块的总帖数,总评论;数诸如类似。

举例: 用户发帖增长积分,更新发帖数统计,同样版块帖子统计变化,又或者还会有其他的统计变化。

针对这种情况是直接在需要的地方通过数据表count()统计还是在表中新增各个的统计字段,触发时候通过事务来完成呢?

我个人偏向于后面这种,但又觉得统计数据用事务来保证数据统计一致性又有点不合理??
但是话又说回来,不采用事务,有些地方又会因为统计错误造成一些错误,类似分页错误?

各位大神有什么好的思路或者建议呢?求指点!

过去多啦不再A梦
过去多啦不再A梦

全員に返信(7)
伊谢尔伦

データ量が大きい場合、データベースはこの種のクエリ、特にユーザーに対するこの種のクエリを処理できません。

いいねを押す +0
过去多啦不再A梦

定期的にカウントしてからキャッシュに入れます

いいねを押す +0
大家讲道理

私はマスターではありませんが、やるならこのようなデータをredisに入れます。

いいねを押す +0
为情所困

[背景]
1 この問題は、データベースのパフォーマンスが既存のビジネス シナリオを満たしていないことが原因で発生します
2 提供されたビジネス シナリオによれば、データには特定のエラーが許容されます

【プログラム構成】

既存のプログラム構造はデータベースを直接呼び出して動作しますが、現時点ではデータベースの性能が要件を満たせないため、データベース間に[カウンター]の層を追加する必要があります。

リーリー

プログラムの調整の前後に、データベースの[追加]、[削除]、[変更]の3つのリンクに[アスペクト]を追加する必要があります。これはフックとしても理解できます
。 Redisは永続化できるため、通常[カウンター]に使用されます

【要注意】
1 DBの動作は正常でも、Redisの動作が失敗するため、データエラーが発生する可能性があります
2 エラーが発生する可能性があるため、エラー修正メカニズムが必要です。このメカニズムにより、サーバーへの負荷を軽減できます。小規模な場合は、mysql のカウントまたは合計を使用して
3 を更新するか、別の [トランザクション メカニズム] を使用して DB および Redis 操作のアトミック性を確保します。

いいねを押す +0
刘奇

InnoDB のカウントはすべてのデータ行をリアルタイムでスキャンする必要があるため、時間がかかります
Myisam はあまり使用すべきではありません
推奨事項数据表添加统计字段

いいねを押す +0
黄舟

統計はバックエンド サービスを使用して処理されます。たとえば、バックエンドはスレーブに接続されていますが、ビジネスには影響しません。

いいねを押す +0
阿神

初めての人は、データの蓄積に count() 形式を使用することはお勧めしません。累積形式を使用することをお勧めします。
新しいデータが追加されるたびに count() を使用してカウントする必要があるため、データベースにとって非常に負担がかかります。
そのため、これを行うことをお勧めします:
1. すべての統計データを保持するには、nosql を使用します。
2. 新しいデータを追加するときに、モジュールをトリガーして、対応するデータを蓄積し、元のデータを上書きします。
3. nosql ダウンの問題が確実に発生するようにするには、対応する統計データをデータベースに保存し、nosql データを定期的にデータベースに保存するロジック モジュールを作成することをお勧めします。
4. もちろん、定期的に count を使用して (これはサーバーがアイドル状態のときに実行できます)、統計が正しいかどうかを再確認することもできます

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!