我正在阅读Oracle 概念文档并对 [关于一般缓存机制 ] 有疑问:
PL/SQL 函数代码可以包含缓存其结果的请求。调用此函数后,系统会检查缓存。如果缓存中包含先前具有相同参数值的函数调用的结果,则系统将缓存的结果返回给调用者并且不会重新执行函数体。如果缓存不包含结果,则系统执行函数体并将结果(对于这些参数值)添加到缓存,然后再将控制权返回给调用者
我的疑问:
PL/SQL 函数执行后,其结果集存储在缓存中。然后 DDL 语句更改表/索引/函数使用的任何内容......
如果我现在运行相同的 PL/SQL 函数,我会得到相同的结果还是更新后的结果?
我相当有信心 DDL 更改也是如此,但您是说 DML 吗?总之,Oracle 不会允许不一致的结果。
Oracle 内置功能的一部分是数据更改通知。这种机制一般用于所有层的缓存失效,例如,如果你在客户端缓存一个查询结果,DCN 确保你总是被路由到最近但最新的副本。