这里
http://www.yiiframework.com/doc/guide/1.1/en/topics.performance我们可以看到以下信息:
“如果应用程序使用Active Record,我们应该打开模式缓存以节省解析数据库模式的时间.这可以通过将CDbConnection :: schemaCachingDuration属性配置为大于0的值来完成.”
我有一些问题:
1.我们为什么要使用模式缓存?
2.架构缓存如何工作?
3.我在哪里可以看到测试?
如果将Yii设置为记录数据库查询(配置文件的db设置中的’enableParamLogging’=> true),您可以看到Yii经常查询数据库以查找ActiveRecord查询.
原文链接:https://www.f2er.com/php/134829.html例如:假设您有一个名为User的模型,并告诉Yii按主键获取用户,Yii将查询数据库三(!)次.它将执行show columns查询,然后显示create table查询,最后它将查询数据库中的实际数据.前两个查询是如此Yii知道您的用户表的架构.如果从应用程序服务器到数据库服务器的往返时间是100毫秒(如果它确实很慢,你应该对它做一些事情),那么获取模式的那两个查询将为你的应用程序响应时间增加至少200毫秒.它将为填充User模型的每个请求执行此操作.根据应用程序的编写方式,它甚至可以在单个请求中多次执行.
另一方面,如果你告诉Yii使用模式缓存,Yii将检查缓存以查看它是否已经知道你的用户表的模式,如果是,它将使用它而不是命中数据库.检查缓存仍然存在延迟,但希望它小于或等于数据库服务器的延迟.假设你正在使用Redis服务器进行缓存,它的延迟也是100毫秒(也非常长).缓存模式仍然比查询数据库更快,因为Yii只需要一次查询缓存来检索模式,而不是两次访问数据库.
因此,在此示例中,从查询架构的高延迟数据库到查询高延迟缓存服务器的切换仍将节省您的时间.实际上,您的缓存应该比数据库具有更低的延迟,因此可以节省更多时间,如果您的应用程序远程复杂,Yii将在每个请求上从多个表加载模式,因此模式缓存可以在请求响应中产生巨大差异时间.