/* 同事发来一个语句,说5个小时不出结果,我滴个神呀,想看看到底是什么垃圾语句造成的。于是叫同事发过来。不看不知道,一看吓一跳,3个表关联,强制使用了2个index hint,其中一个表9g,一个表67g,还有一个小表40Mb。无知的开发人员,以为走index就是快的,哎。。。
下面是同事发来的语句: */
select /*+ parallel(t,4) index(a,IDX_COMM...
分类:
其他好文 时间:
2014-10-25 11:59:37
阅读次数:
257
计划缓冲的基本目的是通过重用执行计划来改进性能。因为,确认执行计划确实可重用很重要。因为即席查询的计划可重用性效率低下,所以一般建议尽可能依赖预定义工作负载技术。为了确保计划缓冲的高效实用,遵循以下建议。明确地参数化查询的可变部分;使用存储过程实现业务功能;使用sp_executesql避免存储.....
分类:
其他好文 时间:
2014-10-24 22:12:15
阅读次数:
341
最近监控数据库,发现下面语句跑得非常慢,原来执行计划走了导致笛卡尔积,来看下面语句:
SQL> explain plan for
2 SELECT COUNT(*)
3 FROM "GD_FS"."TZZ_SJ_DEV_DISC_79073" "A2",
4 "GD_FS"."TZZ_SJ_DEVELOP_MONTH" "A1"
5 WHERE "A...
分类:
其他好文 时间:
2014-10-24 19:02:03
阅读次数:
247
当查询被提交时,SQL Server检查过程缓冲中匹配的执行计划,如果没有找到,SQL Server执行查询编译和优化以生成新的执行计划。 如果执行计划存在于缓冲中,它在私有的执行上下文中重用,这节约了CPU的编译和优化周期。 具有不同过滤条件的相同查询提交到SQL Server时,如:SE...
分类:
其他好文 时间:
2014-10-24 18:49:25
阅读次数:
273
查询计划hash和查询hash 在SQL Server 2008中引入的围绕执行计划和缓冲的新功能被称为查询计划hash和查询hash。这是使用针对查询或查询计划的算法来生成二进制hash值的二进制对象。 可以从sys.dm_exec_query_stats或sys.dm_exec_reques.....
分类:
其他好文 时间:
2014-10-24 18:43:45
阅读次数:
162
直方图
当某列数据分布不均衡,为了让CBO能生成最佳的执行计划,我们可能需要对表收集直方图,直方图最大的桶数(Bucket)是254。
收集直方图是一个很耗时的过程,如无必要,千万别去收集直方图。
Oracle的直方图有两种:
一种是频率直方图(FREQUENCY HISTOGRAM),当列中Distinct_keys 较少(小于254),如果不手工指定直方图桶数(BUCKET),Oracle...
分类:
数据库 时间:
2014-10-24 16:31:37
阅读次数:
360
一、执行计划缓冲 优化器生成的执行计划保存在SQL Server内存池中的一个特别部分,被称为计划缓冲或过程缓冲。过程缓冲是SQL Server缓存的一部分。在缓冲中保存计划可使SQL Server避免在重新提交相同的查询时再次通过整个查询优化过程运行。SQL Server支持不同的技术,如:计划....
分类:
其他好文 时间:
2014-10-24 10:49:19
阅读次数:
122
SQL Server使用许多技术来优化资源消耗:基于语法的查询优化;无用计划匹配以避免对简单查询的深度优化;根据当前分布统计的索引和连接策略;多阶段的查询优化以控制优化开销;执行计划缓冲以避免重新生成执行计划; 以上技术按以下顺序执行:解析器;代数化器;查询优化器;执行计划生成,缓冲和hash...
分类:
其他好文 时间:
2014-10-23 22:34:38
阅读次数:
307
我们知道, SQL 在执行前, 先要进行解析, 解析后, 生成很多执行计划, 从中进行比较.1. 快速解析也就是我们常说的, 比如利用绑定变量等, SQL 的执行计划直接可以利用 shared pool 中的内容.tkprof sys=no sort=prsela,exeela,fchela发现解....
分类:
其他好文 时间:
2014-10-23 10:40:10
阅读次数:
208
Install Oracle12cR1 to Oracle Linux 6.5 in VirtualBox....
分类:
数据库 时间:
2014-10-23 06:48:34
阅读次数:
526