我想更新现有序列的缓存大小,我想在oracle中描述一个序列。怎么做?
增加序列的缓存值有什么缺点
答案 0 :(得分:2)
Alter sequence seq_name cache 20;
请参阅docs。
要获取ddl,您可以使用dbms_metadata包,它可以用于任何对象:
select dbms_metadata.get_ddl('SEQUENCE','SEQ_NAME') from dual;
当您从序列中获取大量内容时,增加缓存大小非常有用。考虑到你使用它们,增加它没有任何缺点。
但是如果你一次生成1个百万个值并且你只使用10个,那么可能不是一个好的想法,因为999990值会丢失。下一个会话将生成另一个1000000值。 我认为引擎可以生成它们并为您的会话分配值。
例如,在我看来,缓存比通常在会话中使用的缓存少10倍。
更新:添加David Aldridge的评论:
大型缓存的实用性与速率有关 它一般用于它,因此不仅适用于大型选择而且适用于 具有多个会话的系统全部一次使用一个值。如 后台,小缓存的性能问题是由 在缓存时需要修改SEQ $系统表 累。这是一个小手术,但显然你不想成为 每秒做100次。
因此,增加缓存,您将在同一资源上拥有更少的concurent会话。