“如果应用程序使用Active Record,我们应该打开模式缓存以节省解析数据库模式的时间.这可以通过将CDbConnection :: schemaCachingDuration属性配置为大于0的值来完成.”
我有一些问题:
1.我们为什么要使用模式缓存?
2.架构缓存如何工作?
3.我在哪里可以看到测试?
例如:假设您有一个名为User的模型,并告诉Yii按主键获取用户,Yii将查询数据库三(!)次.它将执行show columns查询,然后显示create table查询,最后它将查询数据库中的实际数据.前两个查询是如此Yii知道您的用户表的架构.如果从应用程序服务器到数据库服务器的往返时间是100毫秒(如果它确实很慢,你应该对它做一些事情),那么获取模式的那两个查询将为你的应用程序响应时间增加至少200毫秒.它将为填充User模型的每个请求执行此操作.根据应用程序的编写方式,它甚至可以在单个请求中多次执行.
另一方面,如果你告诉Yii使用模式缓存,Yii将检查缓存以查看它是否已经知道你的用户表的模式,如果是,它将使用它而不是命中数据库.检查缓存仍然存在延迟,但希望它小于或等于数据库服务器的延迟.假设你正在使用Redis服务器进行缓存,它的延迟也是100毫秒(也非常长).缓存模式仍然比查询数据库更快,因为Yii只需要一次查询缓存来检索模式,而不是两次访问数据库.
因此,在此示例中,从查询架构的高延迟数据库到查询高延迟缓存服务器的切换仍将节省您的时间.实际上,您的缓存应该比数据库具有更低的延迟,因此可以节省更多时间,如果您的应用程序远程复杂,Yii将在每个请求上从多个表加载模式,因此模式缓存可以在请求响应中产生巨大差异时间.
原文地址:https://www.jb51.cc/php/134829.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。