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

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

WBOY
WBOYOriginal
2016-06-06 20:34:571176Durchsuche

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

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn