Aje*_*esh 8 mysql counter deadlock e-commerce
我创建了一个电子商务后端,我的每个产品都有以下计数器属性
- product views
- product likes
- product comments count
Run Code Online (Sandbox Code Playgroud)
我对产品数据库表的当前数据库列是
- id
- likes_count
- views_count
- comments_count
- category_id
- category_parent_id
- category_sub_parent_id
- handling_charge
- shipping_charge
- meetup_address
- is_additional_fields
- status
- is_deleted
- created_at
- updated_at
Run Code Online (Sandbox Code Playgroud)
如下面的博客Wanelo工程博客所示, 实现一个经常在单行上更新的计数器会导致innodb上的行锁定,如果频繁更新会导致应用程序死锁情况.但对此的解决方案在博客中得到了很好的解释,我对此有所了解.但是,如果有多个计数器与单个产品相关联,可以在应用程序增长时同时更新.我该如何设计计数器的数据库表.我是否应该维护单独的表格
likes counter table
- id - product_id - count
views counter table
- id - product_id - count
comments counter table
- id - product_id - count
Run Code Online (Sandbox Code Playgroud)
通过维护单独的表,即使产品同时更新(如+注释+视图),它也将单独更新,并减少行死锁情况的可能性.如果它在一个表中并且如果所有它的更新同时出现,则可能导致问题.
问题:有没有更好的方法可以为柜台设计表格?有什么建议吗?
产品表中的视图计数器就可以了。
一个单独的点赞表,其中包含 (product_id, user_id) 等列,因此每个用户只能点赞一次产品。否则他们就能像一个简单的柜台一样捣碎。
一个单独的评论表,其中包含(product_id、comment_text、date.. 等)等列
你问的是这个吗?