Oracle数据库管理、开发与实践 作者 杨永健 刘尚毅 第15章 Oracle闪回技术与系统调优.pptVIP

Oracle数据库管理、开发与实践 作者 杨永健 刘尚毅 第15章 Oracle闪回技术与系统调优.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
15.8.2 理解排序活动 排序是SQL语法中的一个很小的方面,但却很重要,在Oracle的调整中,它常常被忽略。当使用CREATE INDEX,ORDER BY 或GROUP BY语句时,Oracle数据库将自动执行排序的操作。通常,在以下情况Oracle会进行排序操作。 在创建索引时。 使用Order by的SQL语句。 使用Group by的SQL语句。 进行table join时,由于现有索引的不足而导致SQL优化器调用MERGE SORT。 当在Oracle实例中建立起一个SESSION时,在内存中就会为该SESSION分配一个私有的排序区域。如果该连接是一个专用连接,那么就会根据init.ora中sort_area_size参数的大小在内存中分配一个PGA(Program Global Area)。如果连接时通过多线程服务器建立的,那么排序的空间就在large_pool中分配。然而,对所有的session用做排序的内存量都必须是一致的,不能为需要更大排序的操作分配额外的排序区域。因此,设计者必须做出平衡,在分配足够的排序区域以避免发生大的排序任务时出现磁盘排序的同时,对于那些并不需要进行很大排序的任务,就会出现浪费。当然,当排序的空间需求超出了sort_area_size参数所设置的大小时,将会在TEMP表空间中分页进行磁盘排序。磁盘排序要比内存排序大概慢14000倍。 私有排序区域的大小是由init.ora中的sort_area_size参数决定的。每个排序所占用的大小由init.ora中的sort_area_retained_size参数决定。当排序不能再分配的空间中完成时,就会使用磁盘排序方式,即在Oracle实例中的临时表空间中进行。 15.8.3 专用模式下排序区的调整 对PGA内存的管理和分配,很大程度上依赖于服务模式。表15-2显示了不同模式下,PGA内存不同部分的分配的异同。 表15-2 不同部分的分配 (1)sort_area_size Oracle在做排序操作(比如,ORDER BY、GROUP BY)时,需要从工作区中分配一定内存区域对数据记录做内存排序。排序完成后,且数据返回前,Oracle会释放这部分内存。sort_area_size指定了这部分内存的大小(但在设置pga_aggregate_target参数之后,该参数就无效了)。 除非在共享服务模式下,一般不推荐设置该参数,而推荐使用pga_aggregate_target进行PGA内存自动管理。如果需要设置此参数,可以考虑设置在1~3M之间。 Oracle也许会为一个查询分配多个排序区。通常情况下,一条语句只有1、2个排序操作,但是对于复杂语句,可能存在多个排序操作,每个排序操作都有自己的排序区。因此,语句的复杂性也影响到每个进程PGA内存的大小。 内存区 专有服务 会话内存 私有的 永久区所在区域 PGA SELECT语句的运行区所在区域 PGA DML/DDL语句的运行区所在区域 PGA (2)sort_area_retained_size 该参数与sort_area_size配合使用。它指定了在排序操作完成后,继续保留用户全局区UGA内存的最大大小,以维护内存中的排序,直到所有数据行被返回后才释放(上面提到,sort_area_size的内存在排序完成、数据行返回之前别释放)回UGA(注意:释放回UGA,而不会被操作系统回收)。 sort_area_retained_size在共享服务中是从SGA中分配的(因为此时UGA从SGA中分配),在专用服务模式中是从PGA中分配的,而soft_area_size无论在哪种模式下都从PGA总分配。 同样,设置了pga_aggregate_target后,该参数无效。 在专用连接方式中,每一个连接到数据库服务器的客户端请求,服务器都会与客户端之间建立连接,该连接专门用于处理该客户端的所有请求,直到用户主动断开连接或网络出现中断。 当连接处于空闲时,后台进程PMON每隔一段时间,就会测试用户的连接状况,如果连接已断开,PMON会清理现场,释放相关的资源。专用连接相当于一对一的连接,能够快速响应用户的请求。当然,连接时,首先要创建PGA(Program global area),参数pga_aggregate_target决定可以由所有服务器进程使用的内存的总量,参数workarea_size_policy决定采用手动管理还是自动管理,下面来看两个例子。 【例15-13】 查看所有服务器进程使用的内存的总量,代码如下。 SQL show parameter pga_aggregate_target; 本例

您可能关注的文档

文档评论(0)

118压缩包课件库 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档