hasson--pga自动管理原理深入分析及性能调整

hasson--pga自动管理原理深入分析及性能调整

ID:6379654

大小:176.66 KB

页数:31页

时间:2018-01-12

hasson--pga自动管理原理深入分析及性能调整_第1页
hasson--pga自动管理原理深入分析及性能调整_第2页
hasson--pga自动管理原理深入分析及性能调整_第3页
hasson--pga自动管理原理深入分析及性能调整_第4页
hasson--pga自动管理原理深入分析及性能调整_第5页
资源描述:

《hasson--pga自动管理原理深入分析及性能调整》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、1.PGA的概念以及所包含的内存结构作为一个复杂的oracle数据库系统来说,每时每刻都要处理不同的用户所提交的SQL语句,获取数据并返回数据给用户。众所周知,解析SQL语句的工作是在oracle实例中的sharedpool所完成的。那么对于每个session来说,其执行SQL语句时所传入的绑定变量放在哪里?而且,对于那些需要执行比较复杂SQL的session来说,比如需要进行排序(sort)或hash连接(hash-join)时,这时这些session所需要的内存空间又从哪里来?另外,还有与每个session相关的一些管理控制信息又放在

2、哪里?对于诸如此类与每个session相关的一些内存的分配问题,oracle通过引入PGA这个内存组件来进行解决。1.1PGA的相关概念PGA按照oracle官方文档解释,叫做程序全局区(ProgramGlobalArea),但也有些资料上说还可以理解为进程全局区(ProcessGlobalArea)。这两者没有本质的区别,它首先是一个内存区域,其次,该区域中包含了与某个特定服务器进程相关的数据和控制信息。每个进程都具有自己私有的PGA区,这也就意味着,这块区域只能被其所属的进程进入,而不能被其他进程访问,所以在PGA中不需要latch这

3、样的内存结构来保护其中的信息。笼统的来说,PGA里包含了当前进程所使用的有关操作系统资源的信息(比如打开的文件句柄等)以及一些与当前进程相关的一些私有的状态信息。每个PGA区都包含两部分:?固定PGA部分(FixedPGA):这部分包含一些小的固定尺寸的变量,以及指向变化PGA部分的指针。?变化PGA部分(VariablePGA):这部分是按照堆(Heap)来进行组织的,所以这部分也叫做PGA堆。可以从X$KSMPP视图中看到有关PGA堆的分布信息。PGA堆中所包含的内存结构包括:·有关一些固定表的永久性内存。·如果session使用的是

4、专用连接方式(dedicatedserver),则还含有用户全局区(UGA-UserGlobalArea)子堆。如果session使用的是共享连接方式(sharedserver),则UGA位于SGA中。·调用全局区(CGA-CallGlobalArea)子堆。31/311.2UGA(用户全局区)的相关概念UGA是包含与某个特定session相关信息的内存区域,比如session的登录信息以及session私有的SQL区域等。每个UGA也包含两个部分:?固定UGA部分(FixedUGA):这部分包含一些小的固定尺寸的变量,以及指向变化UGA

5、部分的指针。?变化UGA部分(VariableUGA):这部分也是按照堆来进行组织的,可以从X$KSMUP视图中看到有关UGA堆的分布情况。UGA堆的分布与OPEN_CURSORS、OPEN_LINKS等参数有关系。所谓的游标(cursor)就是放在这里的。UGA堆中所包含的内存结构包括:·私有SQL区域(PrivateSQLArea):这部分区域包含绑定变量信息以及运行时的内存结构等数据。每一个发出SQL语句的session都有自己的私有SQL区域。这部分区域又可分成两部分:v永久内存区域:这里存放了相同SQL语句多次执行时都需要的一些

6、游标信息,比如绑定变量信息、数据类型转换信息等。这部分内存只有在游标被关闭时才会被释放。v运行时区域:这里存放了当SQL语句运行时所使用的一些信息。这部分区域的大小尺寸依赖于所要执行的SQL语句的类型(sort或hash-join等)和复杂度以及所要处理的数据行的行数以及行的大小。在处理SQL语句时的第一步就是要创建运行时区域,对于DML(INSERT、UPDATE、DELETE)语句来说,SQL语句执行完毕就释放该区域;而对于查询语句(SELECT)来说,则是在所有数据行都被获取并传递给用户以后被释放,或者该查询被取消以后也会被释放。·

7、Session相关的信息。这部分信息包括:v正在使用的包(package)的状态信息。v使用altersession这样的命令所启用的跟踪信息、或者所修改的session级别的优化器参数(optimizer_mode)、排序参数(sort_area_size等)、修改的NLS参数等。v所打开的dblinks。v可使用的角色(roles)等。从上面可以很明显的看出,我们最需要关注的就是私有SQL区域中的运行时区域了。实际上,从9i以后,对这部分区域有了一个新的名称:SQL工作区域(SQLWorkArea)。SQL工作区域的31/31大小依赖

8、于所要处理的SQL语句的复杂程度而定。如果SQL语句包含诸如groupby、Hash-join等这样的操作,则会需要很大的SQL工作区域。实际上,我们调整PGA也就是调整这块区域。后面还会说到

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。