mysql 业务统计信息 是业务触发更新 还是聚合统计

场景描述#

假如,有一条【商品分类】记录,其中有一个该分类下的【商品数量】字段。

提问#

上述场景中的【商品数量】字段何时更新?

我的技术方案#

1). 每次添加、删除商品时更新#

优点:查询性能好
缺点:增删改业务逻辑复杂

2). 查询时使用聚合统计#

优点:增删改业务逻辑不需要考虑
缺点:查询性能降低

3). 脚本定时统计更新#

优点:查询性能好、增删改业务逻辑简单
缺点:实时性差、耗费额外的服务器资源

我的倾向#

我一般倾向于上述第一种方案。理由是,一旦出现查询并发,mysql 性能会很差。实时性在统计中还是比较重要的。

想问问大佬们平时使用哪种方案?或者有更好的解决方案?#

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4

如果这个统计用到的频率地方较少,就实时查呗。 否则就用实时计数较好,如果觉得业务里加统计代码不好,可以使用 事件 触发,把代码分离

3年前 评论
btx2015 (楼主) 3年前
chuoke (作者) 3年前
blankqwq

我一般根据业务需求和数据量大小来选择

  • 业务复杂度 高:聚合统计 低: 直接查询/字段更新
  • 实时性要求: 高: 字段更新/ 直接查询 低: 聚合统计
  • 数据量. 大: 字段更新/ 聚合统计 小: 直接查询

字段更新和聚合统计可以看作同一种,但是字段更新适合简单业务不适合复杂业务

3年前 评论