Database DBMS\u更改\u通知的所有\u行标志的阈值是多少?
我正在尝试为Oracle DB中的表创建缓存。我使用DBMS_CHANGE_通知监视数据库中的更改,以自动更新缓存 然而,只要我所做的更新非常小,这只能以令人满意的方式工作——如果我删除了大部分行,那么通知结构的ALL_rows标志将设置为true,ROWIDs数组为NULL 通过反复试验,我发现更新行数的阈值约为100行,这实在太少了。如果一个表包含几百万行,而我删除了一千行,我就无法获得更新内容的信息,我必须刷新整个表的缓存,这是不可接受的 我能改变这个阈值吗?我在文档中找不到具体的答案: 如果设置了ALL_ROWS(0x1)位,则表示整个表 被修改(例如,从t中删除*或行级粒度 通知中未要求或未提供信息;以及 接收者必须保守地假设整个表 已被宣告无效 这只给了我模糊的信息。从我发现的: 如果在表操作标志中设置了ALL_ROWS位,则表示 表中的所有行都可能已被修改。在里面 添加诸如TRUNCATE之类的操作,这些操作会影响 表中,如果已滚动单个rowid,也可以设置此位 进入一个完整的表无效 如果在给定表中修改了太多行,则可能会发生这种情况 单个事务(超过80个)或总共享内存 由于RDBMS上的rowids而导致的消耗被确定为过大 (超过动态共享池大小的1%)。在这种情况下 接收者必须保守地假设整个表已被删除 无效,回调/应用程序必须能够处理此问题 条件 几年前,我使用了自己的解决方案,这给了我控制/灵活性,但也许有人为你提供了一个解决方案(以50个小块提交?但如果你的应用程序不是唯一一个改变表格的应用程序呢?)。我认为关键在于只缓存正在缓慢变化的表,但这种限制对我来说确实很愚蠢。从中我发现: 如果在表操作标志中设置了ALL_ROWS位,则表示 表中的所有行都可能已被修改。在里面 添加诸如TRUNCATE之类的操作,这些操作会影响 表中,如果已滚动单个rowid,也可以设置此位 进入一个完整的表无效 如果在给定表中修改了太多行,则可能会发生这种情况 单个事务(超过80个)或总共享内存 由于RDBMS上的rowids而导致的消耗被确定为过大 (超过动态共享池大小的1%)。在这种情况下 接收者必须保守地假设整个表已被删除 无效,回调/应用程序必须能够处理此问题 条件 几年前,我使用了自己的解决方案,这给了我控制/灵活性,但也许有人为你提供了一个解决方案(以50个小块提交?但如果你的应用程序不是唯一一个改变表格的应用程序呢?)。我认为关键在于只缓存正在缓慢变化的表,但这种限制对我来说确实很愚蠢。从中我发现: 如果在表操作标志中设置了ALL_ROWS位,则表示 表中的所有行都可能已被修改。在里面 添加诸如TRUNCATE之类的操作,这些操作会影响 表中,如果已滚动单个rowid,也可以设置此位 进入一个完整的表无效 如果在给定表中修改了太多行,则可能会发生这种情况 单个事务(超过80个)或总共享内存 由于RDBMS上的rowids而导致的消耗被确定为过大 (超过动态共享池大小的1%)。在这种情况下 接收者必须保守地假设整个表已被删除 无效,回调/应用程序必须能够处理此问题 条件 几年前,我使用了自己的解决方案,这给了我控制/灵活性,但也许有人为你提供了一个解决方案(以50个小块提交?但如果你的应用程序不是唯一一个改变表格的应用程序呢?)。我认为关键在于只缓存正在缓慢变化的表,但这种限制对我来说确实很愚蠢。从中我发现: 如果在表操作标志中设置了ALL_ROWS位,则表示 表中的所有行都可能已被修改。在里面 添加诸如TRUNCATE之类的操作,这些操作会影响 表中,如果已滚动单个rowid,也可以设置此位 进入一个完整的表无效 如果在给定表中修改了太多行,则可能会发生这种情况 单个事务(超过80个)或总共享内存 由于RDBMS上的rowids而导致的消耗被确定为过大 (超过动态共享池大小的1%)。在这种情况下 接收者必须保守地假设整个表已被删除 无效,回调/应用程序必须能够处理此问题 条件Database DBMS\u更改\u通知的所有\u行标志的阈值是多少?,database,oracle,plsql,Database,Oracle,Plsql,我正在尝试为Oracle DB中的表创建缓存。我使用DBMS_CHANGE_通知监视数据库中的更改,以自动更新缓存 然而,只要我所做的更新非常小,这只能以令人满意的方式工作——如果我删除了大部分行,那么通知结构的ALL_rows标志将设置为true,ROWIDs数组为NULL 通过反复试验,我发现更新行数的阈值约为100行,这实在太少了。如果一个表包含几百万行,而我删除了一千行,我就无法获得更新内容的信息,我必须刷新整个表的缓存,这是不可接受的 我能改变这个阈值吗?我在文档中找不到具体的答案:
几年前,我使用了自己的解决方案,这给了我控制/灵活性,但也许有人为你提供了一个解决方案(以50个小块提交?但如果你的应用程序不是唯一一个改变表格的应用程序呢?)。我认为关键在于只缓存缓慢变化的表,但这种限制在我看来确实很愚蠢。目前有一个过程可以指定值:
如果我可以用getter查找当前值,那就太好了,我还没有找到它。目前有一个过程,您可以在其中指定值: 它