Maison >développement back-end >tutoriel php >网站发表帖子(或文章)时要操作多个数据表,这些操作是一次性完成的吗?

网站发表帖子(或文章)时要操作多个数据表,这些操作是一次性完成的吗?

WBOY
WBOYoriginal
2016-06-06 20:34:571176parcourir

网站在发表帖子这样的功能时,往往需要操作多个数据表,比如发表一个帖子,需要插入帖子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个浏览量,写一次数据库。

一般都是根据操作的事务完整性上来考虑的,若是完整性的那么后台就是一次性完成,若不是,那么可以操作多种方式去完成,如一楼所说多种方式!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn