结果集重用-the design and analysis of algorithms

时间:2024-06-29 04:39:08
【文件属性】:

文件名称:结果集重用-the design and analysis of algorithms

文件大小:4.17MB

文件格式:PDF

更新时间:2024-06-29 04:39:08

达梦,DM7

28.9 查询计划重用 如果同一条语句执行频率较高,或者每次执行的语句仅仅是常量值不同,则可以考虑使 用计划重用机制。避免每次执行都需要优化器进行分析处理,可以直接从计划缓存中获取已 有的执行计划,减少了分析优化过程,提高执行率。 对于计划重用,达梦数据库提供了 INI参数 USE_PLN_POOL来控制,当置为 1时,会 启用计划重用。 28.10 结果集重用 执行计划的生成与优化是一个非常依赖 CPU的操作,而执行一个查询获得结果集也是一 个非常消耗资源的操作。当系统连续执行两个完全相同的 SQL语句,其执行计划和结果集很 有可能是相同的,如果重新生成和执行计划,会大大浪费系统资源。这时如果使用计划重用 和结果集重用,系统的响应速度可以大大提升。 结果集重用是基于计划重用的,如果查询的计划不能缓存,则其查询结果集必然不能缓 存。此外,当语句的游标属性为 FORWARD ONLY 时,默认查询不会生成结果集。而参数 BUILD_FORWARD_RS可以强制在此类查询中生成结果集,以便进行结果集重用。 可通过设置 INI 参数 RS_CAN_CACHE 来控制结果集重用。当置为 0 时表示手动模式 (MANUAL),在此模式下默认不缓存查询结果集,但是 DBA可以通过语句提示等方法指示系 统对必要的查询结果集进行缓存;置为 1 时表示强制模式(FORCE),在此模式下默认缓存 所有可缓存结果集,但是 DBA也可以通过新增的配置参数以及语句提示等方法取消某些不合 适的结果集缓存。 当 RS_CAN_CACHE 为 1 时,还可以通过设置 INI 参数 RS_CACHE_TABLES 和 RS_CACHE_MIN_TIME 对缓存的结果集进行限制和过滤。RS_CACHE_TABLES 指定可以缓 存结果集的基表清单,只有查询涉及的所有基表全部在参数指定范围内,此查询才会缓存结 果集。RS_CACHE_MIN_TIME则指定了缓存结果集的查询语句执行时间的下限,只有实际执 行时间不少于指定值的查询结果集才会缓存。 DBA可以通过在 SQL语句中设置 “RESULT_CACHE”或“NO_RESULT_CACHE” HINT 手动指示查询的结果集是否缓存。如: select /*+ RESULT_CACHE */ id, name from sysobjects; 或者 select /*+ NO_RESULT_CACHE */ id, name from sysobjects; 在语句中使用 HINT指定结果集缓存的优先级要高于 INI中相关参数的设置。 还可以使用系统过程 SP_SET_PLN_RS_CACHE来强制设置指定计划结果集缓存的生效 及失效。这个系统过程对结果集缓存的指定高于其它所有结果集缓存的设置。 在以下情况下,DM不支持结果缓存: 1. 必须是单纯的查询语句计划,PL脚本中包含查询语句也不能缓存结果集。 2. 查询语句的计划本身必须是缓存的。 3. 守护环境中的备机不支持结果集缓存。 4. MPP 等集群环境下不支持结果集缓存(3、4 两点限制都是因为无法精确控制基表 的数据更新时戳)。 5. 查询语句中包含以下任意一项,其结果集都不能缓存:


网友评论