index_ss hint 使用的执行计划变化对比
其中 buffer 代表:当前操作中发生的内存读次数,包含一致性读和当前读
虽然 emp 表记录数不多,但是buffer 读内存的次数差别还是有点大的
SQL> select job from emp where ename='SMITH';
JOB
------------------
CLERK
SQL> se...
分类:
其他好文 时间:
2014-08-27 22:03:58
阅读次数:
191
mysql5.6提供了对sql的跟踪trace,通过trace文件能够进一步了解为什么优化其选择执行计划a而不选b执行计划,帮助我们更好的理解优化其的行为。使用方式:首先打开trace,设置格式为json,设置trace最大能够使用的内存大小,避免接续过程中因为默认内存太小而不能够完整显示set o...
分类:
其他好文 时间:
2014-08-26 15:17:56
阅读次数:
176
今天调优一条SQL语句,由于SQL比较复杂,用autotrace很难一眼看出哪里出了问题,直接上10046。
SELECT AB.*
FROM (SELECT A.*, rownum RN
FROM (SELECT *
from (SELECT DISTINCT (D.DEVICE_ID), F.FUNCTION_LOCATION_ID
f...
分类:
数据库 时间:
2014-08-20 21:14:23
阅读次数:
447
在MSSQL Server中通过查看SQL语句执行所用的时间,来衡量SQL语句的性能。从缓冲池中删除所有清除缓冲区命令:DBCCDROPCLEANBUFFERS清除所有缓存起来的执行计划,清除所有执行计划的语句:DBCCFREEPROCCACHE---------------------------...
分类:
数据库 时间:
2014-08-20 12:24:22
阅读次数:
172
如果一张表上有十几个索引,你有什么感受?显然会拖慢增、删、改的速度,不要指望开发人员能建好索引。我的处理方法是先监控很长的一段时间,看哪些索引没有用到,然后删除。但删除以后,如果发现某一天有用,那又要重新建,如果是大表,那就有些麻烦。现在11g提供一个新特性,不可见索引,可以建索引设置为不可见索引,CBO在评估执行计划的时候会忽略它,如果需要的时候,设置回来即可。
还有一种用途,你在调试一条SQL语句,要建一个索引测试,而你不想影响其他的会话,用不可见索引正是时候。...
分类:
数据库 时间:
2014-08-19 19:13:05
阅读次数:
232
1. 11g之前的绑定变量窥视
我们都知道,为了能够让SQL语句共享执行计划,oracle始终都是强调在进行应用系统的设计时,必须使用绑定变量,也就是用一个变量来代替原来出现在SQL语句里的字面值。比如,对于下面三条SQL语句来说:
select col1 from t where col2 = 1;
select col1 from t where col2 = 2;
...
分类:
数据库 时间:
2014-08-19 01:01:53
阅读次数:
444
Prepare的好处 Prepare SQL产生的原因。首先从mysql服务器执行sql的过程开始讲起,SQL执行过程包括以下阶段词法分析->语法分析->语义分析->执行计划优化->执行。词法分析->语法分析这两个阶段我们称之为硬解析。词法分析识别sql中每个词,语法分析解析SQL语句是否符合sq....
分类:
数据库 时间:
2014-08-18 20:06:32
阅读次数:
500
本章提要-------------------------------------------如何设置, 来获取执行计划如何读懂执行计划-------------------------------------------执行计划描述了SQL引擎为执行SQL语句进行的操作. 在任何时候, 要处理执行...
分类:
其他好文 时间:
2014-08-14 23:19:26
阅读次数:
348
当Oracle查询出现效率问题时,我们往往需要了解问题所在,这样才能针对问题给出解决方案。Oracle提供了SQL执行的trace信息,其中包含了SQL语句的文本信息,一些执行统计,处理过程中的等待,以及解析阶段(如生成执行计划)产生的信息。这些信息有助于你分解sql语句的服务时间和等待时间,并了解所用资源和同步点的详细信息,从而帮助你诊断存在的性能问题。
这篇文章介绍了怎么开启SQL跟踪和获取...
分类:
数据库 时间:
2014-08-14 14:13:48
阅读次数:
311