Oracle 序列缓存与性能
我可以看到DBA团队建议在性能优化时将序列缓存设置为更高的值。将值从20增加到1000或5000。oracle记录缓存值Oracle 序列缓存与性能,oracle,database-performance,Oracle,Database Performance,我可以看到DBA团队建议在性能优化时将序列缓存设置为更高的值。将值从20增加到1000或5000。oracle记录缓存值 指定数据库预先分配并保存在内存中的序列值的数量,以便更快地访问。 在AWR报告的某个地方我可以看到 从dual中选择SEQ_MY_SEQ_EMP_ID.nextval 如果我增加SEQ_MY_SEQ_EMP_ID的缓存值,是否可以看到性能的改善 我的问题是: 序列缓存是否在性能方面发挥了重要作用?如果是,如何知道序列所需的足够缓存值。默认情况下,ORACLE缓存中的序列包含2
指定数据库预先分配并保存在内存中的序列值的数量,以便更快地访问。
在AWR报告的某个地方我可以看到
从dual中选择SEQ_MY_SEQ_EMP_ID.nextval
如果我增加SEQ_MY_SEQ_EMP_ID
的缓存值,是否可以看到性能的改善
我的问题是:
序列缓存是否在性能方面发挥了重要作用?如果是,如何知道序列所需的足够缓存值。默认情况下,ORACLE缓存中的序列包含20个值。我们可以通过序列定义中给定的cache子句来重新定义它。在序列定义中声明cache子句可以大大提高性能。我们可以在序列值用完之前从oracle缓存中获取序列值。当所有这些数据都被使用时,oracle将分配一批新的值,并更新oracle数据字典。 如果需要插入100000条记录并将缓存大小设置为20,oracle将更新数据字典5000次,但如果将5000设置为缓存大小,则仅更新20次
更多信息可能对您有所帮助:您已经做了一些研究,并在这方面找到了一些相关信息:
- 我们需要检查数据库中的序列,这些序列的使用率很高,但定义的默认缓存大小为20—性能 改变这样一个序列的缓存大小的好处是 显而易见
- 增加序列的缓存大小不会浪费空间 缓存仍然由两个数字定义,最后使用的数字和 高水位线;这只是因为高水位线被一个 每次达到该值时,其值都要大得多
- 缓存序列将返回与非缓存序列完全相同的值 一个。但是,序列缓存保存在共享池中,就像 其他缓存的信息是。这意味着它可能会在共享空间之外老化 如果不经常访问,则以与过程相同的方式访问池 足够地一切都很简单,当实例被删除时,缓存也会丢失 关闭
阅读除了花更多时间更新oracle数据字典外,如果使用群集oracle安装,具有小序列缓存的oracle数据字典可能会产生其他负面影响 Murali Vallath在Oracle 10g RAC Grid,Services and Clustering第一版中指出
- Oracle群集(RAC)
- 填充递增序列值的列上的非分区索引
- 并发多实例插入
您每秒请求多少次下一个序列值?您如何知道
SEQ_MY_seku_EMP_ID.nextval
是瓶颈?当检查时,AWR报告中执行的SQL排序似乎占CPU使用率的78.2%。好的,它的绝对值是多少?如何获得它?我可以看到序列缓存等待=5778