首页 > 如何减少数据库访问次数

如何减少数据库访问次数

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

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

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


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

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


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

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


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


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

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

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


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


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


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

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

欢迎补充其他


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

【热门文章】
【热门文章】