我想更新现有序列的缓存大小,并且我想在 oracle 中描述一个序列,如 table 。怎么做 ?
以及增加序列的缓存值的所有缺点是什么
Alter sequence seq_name cache 20;
请参阅文档。
要获取 ddl,您可以使用 dbms_metadata 包,它可以用于任何对象:
select dbms_metadata.get_ddl('SEQUENCE','SEQ_NAME') from dual;
当您从序列中获取大量数据时,增加缓存大小很有用。考虑到您使用它们的事实,增加它没有任何缺点。
但是,如果您一次生成 100 万个值并且只使用 10 个,则可能不是一个好主意,因为丢失了 999990 个值。下一个会话将生成另外 1000000 个值。我认为引擎可以生成它们并为您的会话分配值。
例如,在我看来,缓存比您通常在会话中使用的少 10 倍是可以的。
更新:添加大卫奥尔德里奇的评论:
大缓存的有用性实际上与一般使用它的速率有关,因此不仅适用于大型选择,而且适用于具有许多会话的系统,每次都使用一个值。作为背景,小缓存的性能问题是由缓存耗尽时需要修改 SEQ$ 系统表引起的。这是一个小操作,但显然您不想每秒执行 100 次。
因此,增加缓存,您将在同一资源上拥有更少的并发会话。