Heim  >  Artikel  >  Backend-Entwicklung  >  如何减少数据库访问次数

如何减少数据库访问次数

WBOY
WBOYOriginal
2016-06-06 20:48:191256Durchsuche

自己用PHP写一个博客网站,文章等数据存储在mysql中。

网页布局是:有左右两个侧边栏,中间显示文章内容。
左侧边栏显示分类和文章数,右侧边栏显示最新文章,最新评论,最新留言等。
要访问五次mysql才能得到侧边栏的这些数据,
再加上文章内容和评论等,这样每读一篇文章要访问7次以上的mysql。

不知深浅地请教一下,面对这种情况,
有没有什么技术或是办法减少mysql的访问次数?

回复内容:

自己用PHP写一个博客网站,文章等数据存储在mysql中。

网页布局是:有左右两个侧边栏,中间显示文章内容。
左侧边栏显示分类和文章数,右侧边栏显示最新文章,最新评论,最新留言等。
要访问五次mysql才能得到侧边栏的这些数据,
再加上文章内容和评论等,这样每读一篇文章要访问7次以上的mysql。

不知深浅地请教一下,面对这种情况,
有没有什么技术或是办法减少mysql的访问次数?

数据缓存,以及表设计优化

表设计优化比如:
左侧边栏显示分类和文章数 字段可以设计成: catid catname articlenum(文章数)
每次新增一篇对应分类下的文章articlenum + 1, 这样左侧栏原先需要查询2次数据库,现在只需要查询一次,查询的时候完全可以做持久文件缓存,有新文章增加或新分类增加时再清除文件,重新生成缓存文件

数据缓存比如:
中间的文章内容和标题完全可以缓存下来,不太会变的东西
向类似最新文章,最新评论和留言可以看添加的频率程度看是否也可以缓存下最新N条,新增文章,评论,留言时删除缓存

像这种读写比很大的应用,可以考虑页面静态化。
具体做法是发布博客之后用 PHP 来读取数据库,生成 html 文件,所有访问链接都指向生成的 html 文件。

把数据汇总放到redis上,能极大的提升速度。
另外,为什么不用一些成熟的blog开源代码(如wordpress),要自己搞一个呢?是研究目的吗?

这个肯定是要用缓存了,看看这个

Web应用的缓存设计模式 http://robbinfan.com/blog/38/orm-cache-sumup

把内容静态化,每次只有数据改动的时候生成一次html

这样每读一篇文章要访问7次以上的mysql。

对你而言,重要的不是访问次数,分析过每个sql的执行时间吗。

  1. 修改表,让一些表存在冗余字段,这样查询的时候就不用多表查询
  2. 加缓存,绝对是大招,不过要注意数据一致性(血的教训)

如果要页面加载更快,可以
1. 页面静态化
2. 开天窗,通过js生成模块数据

欢迎补充其他

送你两个字 “事务”, 搜一下就解决了

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