Chinaunix首页 | 论坛 | 博客
  • 博客访问: 85900
  • 博文数量: 15
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 305
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-12 16:30
文章分类

全部博文(15)

文章存档

2008年(15)

我的朋友

分类: Oracle

2008-03-04 10:53:56

来自:程序员启示录

一、内存分为两类: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区调优是关键。

阅读(1359) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~