一、前言 生产中偶尔会碰到一些sql,有多种执行计划,其中部分情况是统计信息过旧造成的,重新收集下统计信息就行了。但是有些时候重新收集统计信息也解决不了问题,而开发又在嗷嗷叫,没时间让你去慢慢分析原因的时候,这时临时的解决办法是通过spm去固定一个正确的执行计划,等找到真正原因后再解除该spm。 二 ...
分类:
数据库 时间:
2019-08-16 19:07:19
阅读次数:
137
使用 sql_profile 固定SQL执行计划 Table of Contents 1. 扯蛋 2. 利用SQL PROFILE固定执行计划 2.1. 查看原来语句的执行计划 2.2. 指定SQL使用选择性比较好的索引 2.3. 生成sql profile 2.4. 验证sql profile 是 ...
分类:
数据库 时间:
2019-06-22 19:47:47
阅读次数:
169
原文:SQL Server如何固定执行计划 SQL Server 其实从SQL Server 2005开始,也提供了类似ORACLE中固定执行计划的功能,只是好像很少人使用这个功能。当然在SQL Server中不叫"固定执行计划"这个概念,而是叫"执行计划指南"(Plan Guide 很多翻译是计划... ...
分类:
数据库 时间:
2018-08-03 10:47:28
阅读次数:
199
------sql plans(plan_hash_value) select ss.plan_hash_value phv, to_char(s.begin_interval_time, 'DD-MON HH24:MI') snap_time, ss.executions_delta execs,... ...
分类:
其他好文 时间:
2017-05-20 17:19:40
阅读次数:
208
我们都希望对于所有在Oracle数据库中执行的SQL,CBO都能产生出正确的执行计划,但实际情况却并非如此,由于各种各样的原因(比如目标SQL所涉及的对象的统计信息的不准确,或者CBO内部一些成本计算公式的先天缺陷等),导致有时CBO产生效率不高、甚至是错误的执行计划。特别是CBO..
分类:
数据库 时间:
2017-02-28 14:03:52
阅读次数:
247
一个SQL,通过SPM固定它的执行计划,可以通过DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE实现。也可以通地此功能在不修改原SQL的情况下对其加HINT来固定执行计划。DB VERSION:Oracle 11.2.0.4OS:CentOS 6.6例如:原SQL走索引:S ...
分类:
其他好文 时间:
2016-11-29 21:31:17
阅读次数:
145
一个SQL,通过SPM固定它的执行计划,可以通过DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE实现。也可以通地此功能在不修改原SQL的情况下对其加HINT来固定执行计划。DB VERSION:Oracle 11.2.0.4OS:CentOS 6.6例如:原SQL走索引:S ...
分类:
数据库 时间:
2016-11-29 21:29:12
阅读次数:
270
sql执行计划为什么会变? 为什么我们的SQL语句执行计划会改变?如何才能稳定SQL语句的执行计划?要想回答上面的2个问题,我们就要首先知道SQL语句的执行计划是如何产生的,有那些因素影响执行计划的生成,只有了解了这些因素我们才能对症下药,稳定我们的SQL语句执行计划。 我们知道,一条SQL语句他的 ...
分类:
其他好文 时间:
2016-11-09 20:03:05
阅读次数:
209
一、历史执行计划固定 历史的执行计划找到一个合理的执行计划进行绑定 1. 存在多个执行计划的语句,按照索引是比较合适的,FULL SCAN不合适 存在两个执行计划,使之后的SQL语句都走Plan hash value: 1404472509 处理模 2、运行coe_xfr_sql_profile脚本 ...
分类:
数据库 时间:
2016-07-05 23:55:26
阅读次数:
330
--由于生产环境执行的sql变化较快,版本发布比较频繁,造成sql的执行计划不是很稳定,经常会有一些性能很查的sql出现
--对于这些sql,我们可以使用sql_plan_baseline对执行计划进行绑定,从而使执行计划固定下来
--前提是sql最好使用绑定变量,就算有的没有绑定变量,确定字段的值不会改变才行,因为是针对sql_id进行的绑定,如果sql文本改变,绑定也就无意义了
具体步骤...
分类:
数据库 时间:
2015-06-26 11:03:06
阅读次数:
181