oracle体系结构分析 (SGA篇)
作者:Java伴侣 日期:2006-10-21
一、内存分为两类:SGA与PGA
1.SGA(system global area)系统全局共享区,供oracle使用。
2。PGA,供用户使用。
安装时候默认为:数据仓库类型安装,此种安装属少用户多内存模式。另一种安装模式为事物处理类型安装,此种安装为多用户少内存模式,可手动设置。
内存使用说明,ORCALE消耗内存比例大约是物理内存的1/2~2/3。WINOWS下建议设置为1/2,UNIX/LINUX下设置2/3。
下面是SGA中的共享池(shared pool)中中各个模块的介绍。
① SQL语句缓冲区(library cache)
先说明SQL语句处理过程:
传入SQL语句——>在SQL语句缓冲区中对比(无)——>分析——>执行
传入SQL语句——>在SQL语句缓冲区中对比(有)——>执行
注意分析方法,同一条SQL语句,如有空格数不同,大小写不同,系统都会重新进行分析。视为不同的SQL语句。所以团队中指定统一写法,实质上是种对数据库调优的做法。
SQL语句缓冲区分为3个部分:常用SQL语句区;普通SQL语句区;不常用语句区。根据LRU算法,根据执行次数来对SQL语句分别进行放入。再不常用语句区的SQL语句可能会被逐出。
② 数据字典缓冲区(Date Dictionary Cache)
③ 块缓冲区高速缓存 (Datebase buffer Cache)
作用:为读取硬盘中的数据而设。因为从内存中读取比硬盘中读取要快得多。
此缓冲区分为三部分:Defarlt pool;Keep pool;Recysle pool.
Oracle本身会在此做自动优化,管理员也可根据内存大小手动设置把表加入此缓冲区。(此缓冲区的设置对ORCALE性能调优很关键)
④ 重做日志缓冲区 (Reclo Log Buffer)
用户在作DML类(如insert,update,delete)语句操作时,系统会把旧的数据放入重做日志缓冲区,便于数据恢复。重做日志缓冲区有三个大模块,每一模块分为2、3个相同的文件,操作时进行同步式写入。目的为了系统安全性考虑,如1个文件丢失不会影响到系统恢复。此缓冲区有固定大小,默认大写为300MB,当数据写满1~3大模块的情况下,会从循环回1模块做覆盖写入。
所以如果DML操作较多的工作环境下,可把此区做大。
⑤ Java池 (Java pool)
此区在8i之后才有。
⑥ 大池 (Large pool)
处理大块操作。如rmain,recover manager (备份、恢复等工作)
PS:在做orcale性能调优时,关键做3、4、1缓冲区的调优。3区调优是关键。