一个使用柱状图的案例[转]
摘要:1、对于取值较少的字段,如果是倾斜的,而我们的查询结果是数据量较小的,这种情况,在这个字段上创建B树索引,是可以起作用的。
2、索引起作用的前提是必须对该字段采集柱状图信息,并且SQL中该字段的条件不能使用绑定变量(如果使用绑定变量由于BIND PEEKING,会导致执行计划不稳定)
阅读全文
posted @
2008-09-28 00:57
一江水
阅读(845)
推荐(0) 编辑
create sequence
摘要:create sequence emp_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
SELECT empseq.currval FROM DUAL;
阅读全文
posted @
2008-09-24 00:25
一江水
阅读(5420)
推荐(0) 编辑
disable/enable validate/novalidate 的区别
摘要:启用约束:
enable( validate) :启用约束,创建索引,对已有及新加入的数据执行约束.
enable novalidate :启用约束,创建索引,仅对新加入的数据强制执行约束,而不管表中的现有数据.
禁用约束:
disable( novalidate):关闭约束,删除索引,可以对约束列的数据进行修改等操作.
disable validate :关闭约束,删除索引,不能对表进行 插入/更新/删除等操作.
阅读全文
posted @
2008-09-23 20:04
一江水
阅读(8059)
推荐(1) 编辑
Oracle多粒度封锁机制研究
摘要:为了确保并发用户在存取同一数据库对象时的正确性(即无丢失修改、可重复读、不读“脏”数据),数据库中引入了锁机制。基本的锁类型有两种:排它锁(Exclusive locks记为X锁)和共享锁(Share locks记为S锁)。
排它锁:若事务T对数据D加X锁,则其它任何事务都不能再对D加任何类型的锁,直至T释放D上的X锁;一般要求在修改数据前要向该数据加排它锁,所以排它锁又称为写锁。
共享锁:若事务T对数据D加S锁,则其它事务只能对D加S锁,而不能加X锁,直至T释放D上的S锁;一般要求在读取数据前要向该数据加共享锁,所以共享锁又称为读锁。
阅读全文
posted @
2008-09-19 23:00
一江水
阅读(1292)
推荐(0) 编辑
如何drop大表的中不用的字段[转]
摘要:我们要删除表中不用的字段,如果直接drop column,对于大表,进行DDL操作的时间会比较长,会严重阻塞DML语句,导致应用服务器crash,通常的做法是先set unused column column_name 或者 set unused column_name,column_name...,然后再利用停机时间做alter table table_name drop unused columns
阅读全文
posted @
2008-09-11 21:16
一江水
阅读(1095)
推荐(0) 编辑
ORA-01555的解释
摘要:假设有张表,叫table1,里面有5000万行数据,假设预计全表扫描1次需要1个小时,我们从过程来看: 1、在1点钟,有个用户A发出了select * from table1;此时不管将来table1怎么变化,正确的结果应该是用户A会看到在1点钟这个时刻的内容。这个是没有疑问的。 2、在1点30分,有个用户B执行了update命令,更新了table1表中的第4000万行的这条记录,这时,用户...
阅读全文
posted @
2008-09-11 15:53
一江水
阅读(816)
推荐(0) 编辑
ORACLE执行计划的一些基本概念
摘要:本文介绍了ORACLE执行计划的一些基本概念,供学习应用。 一.相关的概念 Rowid的概念:rowid是一个伪列,既然是伪列,那么这个列就不是用户定义,而是系统自己给加上的。对每个表都有一个rowid的伪列,但是表中并不物理存储ROWID列的值。不过你可以像使用其它列那样使用它,但是不能删除改列,也不能对该列的值进行修改、插入。一旦一行数据插入数据库,则rowid在该行的生命周期内是唯一的,即即...
阅读全文
posted @
2008-09-10 23:24
一江水
阅读(754)
推荐(0) 编辑
Oracle Hint(提示)和INDEX(索引)的一些忠告
摘要:Oracle的hint种类繁多,大致可以分为下面几类:
优化方式和目标:如RULE、CHOOSE、FIRST_ROWS、ALL_ROWS等。
访问路径:如INDEX、FULL、CLUSTER、INDEX_FFS等。
查询转换:如MERGE、USE_CONCAT、NO_EXPAND等。
连接顺序:如LEADING、ORDERED、STAR等。
连接操作:如USE_NL、USE_HASH、USE_MERGE等。
并行执行:如PARALLE、NOPARALLEL、PARALLEL_INDEX等。
其他类型;如APPEND、UNNEST、CACHE等。
阅读全文
posted @
2008-09-10 23:21
一江水
阅读(6878)
推荐(0) 编辑
Oracle Hint:USE_NL、USE_MERGE、UESE_HASH
摘要:USE_NL(嵌套循环连接)
在嵌套循环连接中,Oracle从第一个行源中读取第一行,然后和第二个行源中的数据进行对比。所有匹配的记录放在结果集中,然后Oracle将读取第一个行源中的下一行。按这种方式直至第一个数据源中的所在行都经过处理。第一个记录源通常称为外部表,或者驱动表,相应的第二个行源称为内部表。使用嵌套循环连接是一种从连接结果中提取第一批记录的最快速的方法。
USE_HASH(哈希连接)
当内存能够提供足够的空间时,哈希(HASH)连接是Oracle优化器通常的选择。在哈希连接中,Oracle访问一张表(通常是较大的表),并在内存中建立一张基于连接键的哈希表。然后它扫描连接中其他的表(通常是较大的表),并根据哈希表检测是否有匹配的记录。
阅读全文
posted @
2008-09-10 23:01
一江水
阅读(10797)
推荐(2) 编辑
and_equal,index_join,index_combine
摘要:and_equal,index_join,index_combine这三种都是oracle利用索引关联获得数据的方法,三者的目的都是为了最大限度的利用索引,减少回表的代价.但是三者的实现方法是有区别的
阅读全文
posted @
2008-09-10 21:23
一江水
阅读(1018)
推荐(0) 编辑
SQL语句优化方法30例
摘要:在SQL语句优化过程中,我们经常会用到hint,现总结一下在SQL优化过程中常见Oracle HINT的用法: 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 例如: SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT'; 2. ...
阅读全文
posted @
2008-09-10 16:23
一江水
阅读(1365)
推荐(0) 编辑
ORACLE索引与高性能SQL介绍
摘要: 索引的种类
非唯一索引(最常用)
唯一索引
位图索引
局部有前缀分区索引
局部无前缀分区索引
全局有前缀分区索引
散列分区索引
基于函数的索引
阅读全文
posted @
2008-09-09 17:42
一江水
阅读(1187)
推荐(0) 编辑
对Group By 语句的一次优化过程
摘要:对Group By 语句的一次优化过程 作者: fuyuncat 来源: www.HelloDBA.com 生产环境中发现一条语句很慢,拿回来一看,其实是一个简单的Group By语句: 表CCMMT的数据量比较大,5M多条记录。 1、 SQL> select CDE, CID 2 from CCMMT 3 GROUP BY CDE, CID 4 having max(ADT...
阅读全文
posted @
2008-09-08 23:27
一江水
阅读(13162)
推荐(1) 编辑
NLS参数设置导致的性能问题案例
摘要:Execute Immediate ' alter session set nls_comp=LINGUISTIC'
Execute Immediate ' alter session set nls_sort=BINARY_CI'
阅读全文
posted @
2008-09-08 23:17
一江水
阅读(770)
推荐(0) 编辑
利用statspack来获取生成环境中top SQL及其执行计划
摘要:利用statspack来获取生成环境中top SQL及其执行计划 作者: fuyuncat 来源: www.HelloDBA.com 在一些特殊情况下,生产环境中top SQL会让DBA捉摸不定。比如一个由复杂分支条件所生成的动态语句;第三方软件或者代码本身对会话环境进行了修改,导致无法正确重现问题语句的查询计划;语句过长导致无法获...
阅读全文
posted @
2008-09-08 23:16
一江水
阅读(855)
推荐(0) 编辑
Oracle左连接,右连接
摘要:左连接显示左边全部的和右边与左边相同的
右连接显示右边全部的和左边与右边相同的
内连接是只显示满足条件的!
阅读全文
posted @
2008-09-08 22:50
一江水
阅读(12719)
推荐(1) 编辑
Oracle的consistent gets是如何计算的?
摘要:1.单表扫描
SQL> execute show_space('TEST1','WWJ');
Unformatted Blocks ..................... 0
FS1 Blocks (0-25) ..................... 0
阅读全文
posted @
2008-09-06 22:13
一江水
阅读(970)
推荐(0) 编辑
ORACLE 执行计划分析
摘要:一、什么是执行计划 An explain plan is a representation of the access path that is taken when a query is executed within Oracle. 二、如何访问数据 At the physical level Oracle reads blocks of data. The smallest amount...
阅读全文
posted @
2008-09-06 20:39
一江水
阅读(3827)
推荐(0) 编辑
Oracle中的Union、Union All、Intersect、Minus[转]
摘要:Intersect和Minus的操作和Union基本一致,这里一起总结一下:
Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
Union All,对两个结果集进行并集操作,包括重复行,不进行排序;
Intersect,对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;
Minus,对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。
可以在最后一个结果集中指定Order by子句改变排序方式。
阅读全文
posted @
2008-09-06 13:18
一江水
阅读(700)
推荐(0) 编辑
Oracle 性能优化的基本方法概述
摘要:确定当前Oracle性能瓶颈
重点:从Oracle 等待接口v$system_event、v$session_event和v$session_wait中获得等待事件,进而找出影响性能的对象和sql语句
阅读全文
posted @
2008-09-03 10:38
一江水
阅读(5647)
推荐(0) 编辑
ORACLE中查看执行计划plan
摘要:sql>set serveroutput on
sql>set autotrace traceonly
完整格式是:
SET AUTOT[RACE] {ON | OFF | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]
阅读全文
posted @
2008-09-02 17:15
一江水
阅读(2442)
推荐(0) 编辑
ADDM测试手记
摘要:1.运行以下SQL,找到你要分析的时间段的SNAP_ID,记下两个时间对应的SNAP_ID
SQL>SELECT SNAP_ID,BEGIN_INTERVAL_TIME,END_INTERVAL_TIME,SNAP_LEVEL,ERROR_COUNT FROM dba_hist_snapshot ORDER BY snap_id DESC;
2.运行@ORACLE_HOME/rdbms/admin/addmrpt.sql生成报告
在SQL运行的过程中,会首先提示输入起始的SNAP_ID,输入你刚才记下的开始时间对应的SNAP_ID,接着会要求输入中止时间对应的SNAP_ID,接着会要求输入一个名称,Oracle会生成一个以此名称命名的报告,如test.lst.
阅读全文
posted @
2008-09-01 15:05
一江水
阅读(570)
推荐(0) 编辑