网站发表帖子(或文章)时要操作多个数据表,这些操作是一次性完成的吗?
程序员文章站
2022-05-04 09:36:12
...
网站在发表帖子这样的功能时,往往需要操作多个数据表,比如发表一个帖子,需要插入帖子post表,然后插入帖子标签post_tag关系表,插入post_user帖子关注表,更新tag表中posts帖子数量,更新user表中的帖子数量以及积分数量等。这些多个数据表操作是否是一次性完成的,还是用到了其他的方法呢?感觉一次性完成的话时间就比较长了。在发表回复、评论是时也有消息通知这些,展示帖子时也需要更新帖子的浏览量。不知道beanstalkd的作用是什么,我看到php phalcon框架官方做得一个示例论坛中用到了这个,不知道是不是对解决这些问题有用?
回复内容:
网站在发表帖子这样的功能时,往往需要操作多个数据表,比如发表一个帖子,需要插入帖子post表,然后插入帖子标签post_tag关系表,插入post_user帖子关注表,更新tag表中posts帖子数量,更新user表中的帖子数量以及积分数量等。这些多个数据表操作是否是一次性完成的,还是用到了其他的方法呢?感觉一次性完成的话时间就比较长了。在发表回复、评论是时也有消息通知这些,展示帖子时也需要更新帖子的浏览量。不知道beanstalkd的作用是什么,我看到php phalcon框架官方做得一个示例论坛中用到了这个,不知道是不是对解决这些问题有用?
网站性能在于数据库,但是对于很多网站来说,同时间写的数据其实并不多。
根据你情况,可以做以下优化:
1.数据关联优化
post和tag的关联关系,可以单纯存入两者id,
post_tags,101xxx,103xxx
2.异步处理积分和消息通知
3.利用缓存处理频繁读写数据
浏览量可以先写入缓存,然后根据实际情况,譬如每50个浏览量,写一次数据库。
一般都是根据操作的事务完整性上来考虑的,若是完整性的那么后台就是一次性完成,若不是,那么可以操作多种方式去完成,如一楼所说多种方式!