粒度(granule)

发布时间:2016-12-10 14:55:28 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"粒度(granule)",主要涉及到粒度(granule)方面的内容,对于粒度(granule)感兴趣的同学可以参考一下。

源址:http://www.eygle.com/archives/2007/01/oracle_granule_size.html 在《深入浅出Oracle》一书的P110页,关于Oracle的Granule我有这样一段描述: 自9i开始,Oracle引入新的初始化参数db_cache_size;该参数定义主Block Size(db_block_size定义的块大小)的default缓冲池的大小; Db_cache_size最小值为一个粒度(granule)。 粒度(granule):粒度是连续虚拟内存分配的单位,粒度是9i新引入的参数,其大小取决于SGA_MAX_SIZE参数所定义的SGA总的大小 当SGA<128M时,粒度值为4M; 否则粒度值为16M 粒度大小受内部隐含参数_ksmg_granule_size的控制 有朋友在Windows2003上测试得出了不同的结论: SQL> show sga Total System Global Area 319888364 bytes Fixed Size 453612 bytes Variable Size 310378496 bytes Database Buffers 8388608 bytes Redo Buffers 667648 bytes SQL> set linesize 120 SQL> col name for a30 SQL> col value for a20 SQL> col describ for a60 SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ 2 FROM SYS.x$ksppi x, SYS.x$ksppcv y 3 WHERE x.inst_id = USERENV ('Instance') 4 AND y.inst_id = USERENV ('Instance') 5 AND x.indx = y.indx 6 AND x.ksppinm LIKE '%&par%' 7 / Enter value for par: _ksmg_granule_size old 6: AND x.ksppinm LIKE '%&par%' new 6: AND x.ksppinm LIKE '%_ksmg_granule_size%' NAME VALUE DESCRIB ------------------------------ -------------------- --------------------------- _ksmg_granule_size 8388608 granule size in bytes SQL> alter system set sga_max_size=100M scope=spfile; System altered. SQL> startup force ORACLE instance started. Total System Global Area 114367248 bytes Fixed Size 453392 bytes Variable Size 109051904 bytes Database Buffers 4194304 bytes Redo Buffers 667648 bytes 数据库装载完毕。 数据库已经打开。 SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ 2 FROM SYS.x$ksppi x, SYS.x$ksppcv y 3 WHERE x.inst_id = USERENV ('Instance') 4 AND y.inst_id = USERENV ('Instance') 5 AND x.indx = y.indx 6 AND x.ksppinm LIKE '%&par%' 7 / 输入 par 的值: _ksmg_granule_size 原值 6: AND x.ksppinm LIKE '%&par%' 新值 6: AND x.ksppinm LIKE '%_ksmg_granule_size%' NAME VALUE DESCRIB ------------------------------ -------------------- ---------------------------- _ksmg_granule_size 4194304 granule size in bytes 其实这个granule_size在不同平台、不同版本中,Oracle的设置的缺省值都可能不同,书中提到的是一种通常设置,具体的我们知道了Oracle的内存管理方式就好。 Oracle9i的官方文档如下描述: Granule size is determined by total SGA size. On most platforms, the size of a granule is 4 MB if the total SGA size is less than 128 MB, and it is 16 MB for larger SGAs. There may be some platform dependency, for example, on 32-bit Windows NT, the granule size is 8 MB for SGAs larger than 128 MB. Oracle10gR2文档如下描述: Granule size is determined by total SGA size. On most platforms, the size of a granule is 4 MB if the total SGA size is less than 1 GB, and granule size is 16MB for larger SGAs. Some platform dependencies arise. For example, on 32-bit Windows, the granule size is 8 M for SGAs larger than 1 GB. SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ  FROM SYS.x$ksppi x, SYS.x$ksppcv y WHERE x.inst_id = USERENV ('Instance') AND y.inst_id = USERENV ('Instance') AND x.indx = y.indx AND x.ksppinm LIKE '%&par%' /

上一篇:c#明年学习计划书
下一篇:雪中送炭:十大前沿移动应用开发工具

相关文章

相关评论