oracle - pl/sql中实现缓存层的解决方案

标签 oracle caching oracle11g oracle11gr2

我有一个带有 1 个参数(日期)的函数,它封装了 1 个查询,例如

SELECT COUNT(*)
  FROM tbl
 WHERE some_date_field BETWEEN param_date - INTERVAL '0 1:00:00' DAY TO SECOND
                           AND param_date

我想要做的是使用 ttl = 1 分钟将此查询的结果缓存在某处。缓存的结果应该在所有 session 之间共享,而不仅仅是当前 session 。

有什么建议吗?

PS:是的,我知道oracle函数结果缓存,但它不符合要求。
PPS:是的,我们可以创建具有一些值的第二个人工参数,例如 date in format of yyyymmddhh24mi所以它每分钟都在变化,我们能够使用函数结果缓存,但我希望这是一个允许我隐藏缓存依赖项的解决方案。

最佳答案

我会使用全局应用程序上下文和刷新间隔为 1 分钟的作业来设置上下文。

PS:INTERVAL '1' HOUR 比 INTERVAL '0 1:00:00' DAY TO SECOND 更短且更有意义

关于oracle - pl/sql中实现缓存层的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5496125/

相关文章:

java - 将日期转换为简单的 DD-MM-YYYY HH24 :MI:SS format in SQL

sql - 根据类型创建表

java - oracle - 我们如何获得大于或等于的最小数值

c# - 使用 Dapper 将 C# bool 作为参数传递给 Oracle

php - 使用键模式从 Laravel 4 缓存中删除?

jsf - OmniFaces CombinedResourceHandler 需要很长时间才能加载

html - 尽管 Chrome 正确缓存 Assets ,但应用缓存无法正常工作

java - 在 JDBC 中捕获 PL/SQL 错误

sql - 如何插入表列值: month & day from column datetype

c# - Oracle.DataAccess.Client.BulkCopy - 试图在不应该将 varchar2 转换为数字