首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理SQL查询结果缓存

如何处理SQL查询结果缓存
EN

Stack Overflow用户
提问于 2010-06-22 23:26:13
回答 1查看 1.4K关注 0票数 3

在Perl程序中,我缓存SQL请求结果以加快程序速度。

我看到了两种常见的方法:

  • 使用查询作为缓存结果的索引创建哈希,如建议的这里
  • 创建一个只有2个索引的散列,首先是已使用表的列表,第二个是where子句

我今天使用了第二个选项,因为当您知道某个给定的表已被更改时,它更容易清除它们的缓存。

我的问题是处理缓存清理,今天我所做的大多数选择查询都是针对很少更改的表进行的。所以当我运行更新/删除/..。我只是清理了这个表的哈希表部分,该部分缓存结果。

这对性能几乎没有影响,因为我很少需要清理经常使用的散列部分。

但是现在对于在大多数表上更新/删除更频繁的程序来说,这使得我的缓存效率大大降低,因为我经常需要清理它。

怎么处理呢?我目前的缓存系统非常简单,Cache::Memcached::Fast非常复杂。你有没有比我的解决方案更有效,但仍然很简单?

EN

回答 1

Stack Overflow用户

发布于 2010-06-22 23:52:00

我用于缓存不太可能改变的数据(例如配置数据)的一种方法是通过优秀的追忆模块使用回忆录。我将sql查询包装在传递绑定参数和表名的函数中,并回传该函数。

代码语言:javascript
复制
use Memoize;

sub get_config_for_foo
{
     my ($table, $field1, $field2) @_;

     # generate my sql query here, using table, field1 and field2...

     return $result;

}
memoize(get_config_for_foo);

您还可以在memcache或类似的东西中使用缓存策略;请查看Tie::Cache::LRU以获得一个很好的实现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3097876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档