手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆

Yii的AR效率释疑

首页 > PHP >

关于yii的AR效率,其实一直以来都有很多的想法,试想,如果不做metadata的缓存,每次查询前,都必须先做一下metadata的查询,效率也不会太高到哪里吧?
所以,看到官方有人在问就关注了一下:http://www.yiiframework.com/forum/index.php/topic/16597-yii%E7%9A%84ar%E7%9C%9F%E7%9A%84%E8%83%BD%E7%94%A8%E4%B9%88%EF%BC%9F/

有人提问:

XML/HTML代码
  1. 我在首页会很多个ar的请求。热门文章、最新文章、编辑推荐、最新评论的文章。。。。  
  2.   
  3. 我把这些通过 model()->findAll()的结果放在一个数组里。  
  4.   
  5. 然后把这个数组var_dump了一下,这些数据高达1.06M。这是不是太耗内存了?  
  6.   
  7. 页面上全是密密麻麻的数据表结构,如果关联关系复杂点的,会更多。  
  8.   
  9. 我光var_dump(yii::app()->db) 就有5000多行的数据。  
  10.   
  11.   
  12. 这样的db操作这么耗内存,敢用么?谁能消除我这个担心?多谢  
  13.   
  14. AcitveRecord ,只能玩一玩开拓眼界. 真要生产环境用, 就不行!   

然后,Qiang就回复了:

XML/HTML代码
  1. 你的结论有点想当然了。建议你仔细做profiling来验证。事实上,AR已经被成功应用在若干大流量的网站上了。  
  2.   
  3. 你不能用var_dump()来估计AR的内存开销。var_dump会把所有被reference到的对象都dump出来,包括application,以及所有的application component,因为它们都被AR间接reference到了。  
  4.   
  5. AR额外的内存开销是存储10个左右变量的开销。如果按20字节来估算,额外的开销是200字节,这样在1000个AR对象情况下,额外的内存开销为200KB。这个对几乎所有的web应用而言应该不是问题。  
  6.   
  7. 如果你需要装载更多的数据,建议你使用DAO。  
  8.   
  9. 另外,对于任何大流量的web应用而言,cache都是必须的。cache可以帮助解决绝大多数的性能瓶颈。   

cache在DB中有一些处理的,比如那个duration,在db中查询就可以做一下缓存了。然后metadata再做一下缓存,不也挺好?




本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"易栈网-膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

Tags: yii

« 上一篇 | 下一篇 »

只显示10条记录相关文章

常用网站的反向代理页[2013-09-28] (浏览: 66064, 评论: 10)
Yii CDbCriteria的常用方法 (浏览: 56343, 评论: 5)
将Yiiframework与JQuery easyUI整合使用 (浏览: 38198, 评论: 2)
Yii:relations update(self::STAT) (浏览: 33673, 评论: 0)
值得收藏的yii2的doc中关于db Query的说明 (浏览: 29239, 评论: 0)
Yii Demos 随想 (浏览: 28546, 评论: 3)
在Yii框架中使用Hprose或PHPRPC (浏览: 27557, 评论: 0)
Yii ClinkPager 郁闷 (浏览: 27277, 评论: 2)
Yiiframework(Yii框架)开发笔记:续四 (浏览: 26748, 评论: 3)
Yii 一行代码,为模块绑定子域名 (浏览: 26087, 评论: 0)

1条记录访客评论

yii 在配置文件里db中可以加入 schemaCachingDuration参数,设置缓存表结构等数据
-------
这个当然知道,但问题是,如果更改了表结构的话,这个缓存会导致程序出错(当然是在有写操作的时候)
如果用migra的那个升级,对表结构的缓存不知道有没有做清理(没仔细看过)

Post by solomon on 2012, April 25, 12:40 AM 引用此文发表评论 #1


发表评论

评论内容 (必填):