注册本站  论坛  繁體中文

慧民电脑芯片级维修-电脑技巧
手机 | MP3 | MP4 | 显卡 | 主板 | 显示器 | 光存储 | 笔记本 | 网络设备 | 移动存储 | 数码相机
键鼠 | CPU | 音箱 | GPS | 电视 | 服务器 | 投影机 | 机箱电源 | 品牌电脑 | 办公打印 |
| 网站首页 | Cisco | Windows | Linux | Java | Dotnet | Oracle | 网页设计 | 平面设计 | 安全 | 软件应用 | 电脑维修 | 办公维修 |
您现在的位置: 电脑技巧 >> Oracle >> 性能调优 >> Oracle正文

Oracle 11g:SQL查询结果集缓存

文章来源:IT专家网 作者:戴羽 更新时间:2008-9-22 12:41:46 【 】 【加入收藏

  随着过去三十年Oracle关系型数据库管理系统的发展,它提供给数据库管理员几个选项将经常被访问的数据保存在内存中以减少或消除从数据库的I/O子系统读取不必要的数据。下面是使数据库管理员可以在她的工具中找到的一些特性的快速概览,这些特性帮助维护对查询数据库内存中相关数据的良好控制。

  持久缓存数据库块。 CACHE 存储选项(还提供了+CACHE优化器提示)提供了一个为数据表保存所有数据库块的方法,只要这个表被表扫描进数据库缓存区中。一旦通过这个方法进行了缓存区,相关的缓存就绝不会从缓存区中过期,直到数据库实例终止。这个策略有一些缺陷,因为它依赖于数据库管理员对哪个表最能受益于缓存的了解,它还倾向于作为一个用于编码表和参照数据的万用解决方法而被过度使用。

  影响数据库块的保存持久性。Oracle还通过创建或改变一个表或索引以便它保存在这个缓存池中,从而提供了影响缓存保持在数据库缓存区中的KEEP缓存池中的能力。Oracle只是简单的将缓存尽可能长时间的保存在KEEP池中;本质上来说,它们放置在缓存中更接近最常使用(MRU)的一端。但是,没有什么是永远的,当大型查询需要大量缓存来完成时,就可能使KEEP缓存池中的缓存最终过期。

  永久地保存结果集。物化视图(MV)提供了一个保存经常查询的数据的方法:通过创建一个具有基本表的视图来保存一个特定记录集一段较长时间的能力。如果配置适当,Oracle将“重写”一个现有查询以便它查询物化视图而不是直接查询基本的数据库表。此外,可以建立一个物化视图以便对它的基本基础数据的改变可以自动地对依赖的物化视图进行更新。但是,物化视图的最明显优势也是它的潜在危害:因为它需要定期地进行更新以保证它的数据是最新的,数据的实际刷新可能花费额外的时间,甚至有可能发生在很不恰当的时刻。

  我们真正需要的是持久性比这些特性短一些的东西(仍然很出色!):一段只存储一个查询结果的内存,它可以与任何其它需要相似数据的存储共享。例如,一个“编码表”捕捉U.S.各州和土地面积,它可能只是一个具有几行和几列的表,并且几乎都不改变,所以它应该很少需要被更新。因此,当这个结果集不再有效时,我希望它可以自己更新而不需要我进行任何干预。那么经常被几个用户频繁执行、但不经常利用物化视图的查询重写功能的查询怎么样呢?物化视图在创建、配置和刷新方面不是那么简单,所以这个特性需要比物化视图更易于建立,而且必须能够只花费几分钟的执行耗费来刷新它本身。

  SQL查询结果集缓存

  Oracle Database 11g提供了结果集缓存来提供这个功能。一个SQL查询结果集将取决于几个新的初始化参数的设置,被缓存在共享全局区(SGA)的一个数据库实例共享池的子段中。

  RESULT_CACHE_MODE。这个新参数接受三个值之一,它可以被设置为数据库(ALTER SYSTEM)或单独会话(ALTER SESSION)级别:

  •   当设置为MANUAL(默认)时,如果查询本身指定了+RESULT_CACHE优化器提示,那么一个SQL查询结果将只被认为是可能被缓存。
  •   但是如果这个参数设置为FORCE,那么查询的结果将总是被缓存,除非这个查询指定了+NO_RESULT_CACHE优化器提示。
  •   最后,如果这个参数设置为了AUTO,那么Oracle 11g使用一个未发布的内部算法来自动地根据结果集从未来语句执行受益频繁度来决定查询结果集是否应该被缓存。只有当这个查询指定了+NO_RESULT_CACHE优化器提示时它才会被忽略。

  控制结果集缓存内存的利用。Oracle 11g还提供了几个方法来限制使得分配给SQL查询结果集缓存的内存数量是合适的:

  RESULT_CACHE_MAX_SIZE。为所有的本地结果缓存预留适当的SGA内存量,数据库管理员可以为RESULT_CACHE_MAX_SIZE初始参数指定一个数值。Oracle 11g自动地将这个提供的数值四舍五入到最接近的32K界限。

  如果没有提供数值,那么Oracle 11g使用下面的算法来为结果缓存分配内存:

  如果为新的Oracle 11g MEMORY_TARGET 参数指定了数值(例如分配给数据库实例的SGA和PGA的总内存),那么Oracle将设置RESULT_CACHE_MAX_SIZE为MEMORY_TARGET的0.25%。

  如果没有为MEMORY_TARGET设置数值,但是设置了SGA_TARGET的数值,那么Oracle 11g将RESULT_CACHE_MAX_SIZE设置为SGA_TARGET的0.5%。

  最后,如果没有为MEMORY_TARGET设置数值,也没有为SGA_TARGET设置数值,那么Oracle根据的SHARED_POOL_SIZE设置将RESULT_CACHE_MAX_SIZE设置为分配给共享池的1.0%。

  注意,无论使用哪个算法,Oracle 11g都不会将RESULT_CACHE_MAX_SIZE设置为超过SHARED_POOL_SIZE的75%。此外,要注意如果数据库管理员想使SQL结果缓存特性完全失效,那么她仅仅需要设置这个内存分配空间规模为0来告诉Oracle 11g不为结果缓存保留任何内存空间。

  RESULT_CACHE_MAX_RESULT。 这个参数告诉Oracle 11g每个单个查询应该允许多少结果缓存。它的默认值是整个结果缓存的5%,这通常应该是足够的,但是它也可以设置为0%到100%。

  • 上一篇Oracle:

  • 下一篇Oracle:
  • 最 新 热 门
     Oracle推出开发工具 支持.NET 3.5与VS2008
     Oracle Database 12g将不支持裸设备
     浅谈数据库管理系统在近些年内的发展趋势
     Oracle 触发器语法及实例(二)
     SQL Server与Oracle实施成本上的差异
     Oracle 触发器语法及实例(一)
     Oracle物化视图(一):创建最简单物化视图
     Oracle数据库中跟踪sql语句介绍
     Oracle为开发人员提供的两个最基本、最重要…
     Oracle Workshop对Java EE 5 Web标准的支持
    最 新 推 荐
     Oracle 数据库中时间问题比较
     高效删除Oracle数据库中重复数据的方法
     Oracle10g dbms_workload_repository使用
     表空间设计理念,Oracle高性能的重要保障
     Oracle兼容之层次查询:层次查询高级特性分…
     详细讲解Oracle数据库运行错误的解决方法
     Oracle数据库容灾复制解决方案Share Plex
     Oracle锁
     Oracle的视图
     Oracle数据库内存参数调优技术的个人总结
    相 关 文 章

    Oracle推出开发工具 支持.NET 3.5与VS2008
    Oracle Database 12g将不支持裸设备
    Oracle 触发器语法及实例(二)
    SQL Server与Oracle实施成本上的差异
    Oracle 触发器语法及实例(一)
    Oracle物化视图(一):创建最简单物化视图
    Oracle数据库中跟踪sql语句介绍
    Oracle为开发人员提供的两个最基本、最重要…
    Oracle Workshop对Java EE 5 Web标准的支持
    Oracle中table函数的应用

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告

     

    Copyright 2006-2008 pcjx.com All Rights Reserved
    电脑技巧 版权所有 粤ICP备06059145号 地图
    门市地址:广东省佛山市南海区黄岐黄海路133号
    本网站所有内容未经许可不得转载或做其他使用