在php / mysql系统中,我们有许多配置值(大约200) - 这些值大多是布尔值或整数,并存储诸如每页结果数以及页面是2列还是3列之类的东西。这些都存储在一个mysql表中,我们使用单个函数在请求时返回这些值,在某些页面加载时,此配置表最多可能有大约100个请求。使用此系统的站点数量,这意味着每秒可能有数千个请求来检索这些值。问题是这种方法是否有意义,或者是否最好每页执行一次请求并将所有配置存储在一个数组中,并且每次都从这里检索。
答案 0 :(得分:1)
如果启用MySQL
查询缓存,则选择值的查询将缓存在内存中,MySQL
将从内存中立即回答,除非基础表中的查询或数据发生更改
这在性能和可管理性方面都非常出色。
查询结果可以在会话之间重复使用:这意味着,如果您有1000
个会话,则无需保留1000
个数据副本。
答案 1 :(得分:1)
使用缓存,例如memcache,APC或任何其他缓存。加载设置一次,缓存它,并通过单个对象的会话共享它。
即使保存了查询缓存,反复查询数据库也浪费时间和资源。而是在任何修改值的请求上,使内存中的缓存无效,以便在下次有人从中请求值时立即重新加载。
答案 2 :(得分:0)
您可能需要考虑使用memcache。我认为它会比多个数据库查询更快(即使启用了查询缓存),也不需要数据库连接来获取它们。
您可能想要考虑将它们从平面文件加载到内存中,这使您有机会对配置值进行版本控制。
答案 3 :(得分:0)
我肯定会为此推荐memcache。我们有类似的设置,它显着地降低了该服务器上的资源使用率。