是否有任何数据库管理系统(Oracle、MySQL、SQLite、PostGres)提供结果集缓存?我正在尝试了解缓存SQL结果的最常用方法是什么,以便减少数据库负载。我的理解是,数据库是扩展应用程序的瓶颈,而缓存将有助于减少数据库中的负载。
如果DBMS不提供结果缓存,那么使用Memcache之类的缓存工具是不是一个好主意?
发布于 2012-07-17 13:25:07
数据库通常缓存查询的执行计划,而不是结果集本身。
一种可行的方法当然是按照您的建议执行,并为此使用Memcache。Memcache只是提供这种功能的众多工具中的一个。这个决定在很大程度上取决于你正在工作的环境,应用程序的类型(web和windows),架构等等。
例如,如果结果集不是太大,您可以将其缓存在内存中。
发布于 2012-07-18 18:16:31
Oracle提供了几种实现缓存的方法。这取决于您使用的Oracle数据库的版本。在旧版本中,您可以选择“在内存中固定一个表”。这有效地将任何频繁访问的表缓存到缓存中。这里需要注意的是,这可能会使用得有点过于宽松。还可以选择使用实例化视图。现在,这不是一种缓存的方法,而是具有与缓存相同的好处。Oracle 11g现在允许在数据库和会话级别缓存查询。这是通过使用提示来实现的。查找RESULT_CACHE_MODE和RESULT_CACHE。有各种配置设置,EXPLAIN PLAN可以显示是否正在从结果缓存中读取查询。我没有使用第三方工具的经验,比如Memcache(?)但是使用这类工具的危险在于,您实际上可能会绕过Oracle在其自己的RDBMS中实现的任何东西(一些有益的东西)。
https://stackoverflow.com/questions/11516298
复制相似问题