Naa*_*aaN 10 oracle database-performance
我可以看到DBA团队建议在性能优化时将序列缓存设置为更高的值.要将值从20增加到1000或5000. oracle docs表示缓存值,
Specify how many values of the sequence the database preallocates and keeps in memory for faster access.
在AWR报告的某处,我可以看到,
select SEQ_MY_SEQU_EMP_ID.nextval from dual
如果我增加缓存值,可以看到任何性能改进SEQ_MY_SEQU_EMP_ID.
我的问题是:
序列缓存是否在性能方面发挥了重要作用?如果是这样,如何知道序列所需的足够缓存值是多少.
小智 9
我们可以在它们用完之前从oracle缓存中获取序列值.当所有这些都被使用时,oracle将分配一批新的值并更新oracle数据字典.如果你有100000条记录需要插入并设置缓存大小为20,oracle将更新数据字典5000次,但如果你将5000设置为缓存大小则只有20次.
更多信息可以帮助您:http://support.esri.com/en/knowledgebase/techarticles/detail/20498
如果省略CACHE和NOCACHE,则数据库默认会缓存20个序列号.如果您在Oracle Real Application Clusters环境中使用序列,Oracle建议使用CACHE设置来增强性能.
同时使用CACHE和NOORDER选项可以获得序列的最佳性能.在没有ORDER选项的情况下使用CACHE选项,每个实例都缓存一个单独的数字范围,并且可以由不同的实例无序地分配序列号.因此,CACHE的值越少写入字典,但可能会丢失更多的序列号.但是没有必要担心失去这些数字,因为回滚,关闭肯定会"失去"一个数字.
CACHE选项使每个实例缓存其自己的数字范围,从而减少对Oracle数据字典的I/O,并且NOORDER选项消除了互连上的消息流量,以协调跨数据库的所有实例的数字顺序分配.NOCACHE会很慢......
读这个