文章列表
 
您正在查看 "Oracle Tuning" 分类下的文章

2011年06月16日 星期四 22:27

Mark it!!!

cost =
    blevel +
    ceiling(leaf_blocks * effective index selectivity) +
    ceili

 
2011年06月14日 星期二 11:05
一些说明
堆表 没主键和索引
IOT表有主键
数据行长度22个字节
导入的数据主键ID随机性比较大,没有排序的
@@导入2000w
 
2011年06月13日 星期一 21:55

当导入索引组织表的数据不能排序时,那么效率是很差的。如果用一个大事务来做,很可能失败,并且导致服务器压力很大。

在oracle中还是推荐使用根据extent分块来实现大数据量的移动 http://hi.baidu.com/dbaeyes/blog/item/dcf741ada8edac004b36d674.html

 测试:

 
2011年06月12日 星期日 22:08

   索引组织表其实就是存储在一个索引结构中的表

一般我们在oracle数据库中,用到的都是堆组织表,而在mysql常用引擎innodb中的表就是索引组织表,今天因为业务需要,测试了下oracle的索引组织表

  需求是这样的,将有几十亿数据的A表的新字段cc更新为一个新值(蛋疼的需求),这个值来自数据仓库统计得到的一个B表,A.ID与B.ID关联,需要将B表拉到A表所在的库。如果使用常规的方法,将B表拉过来,然后还需要创建 id,cc两个字段的联合索引,这样将消耗大量的空间,并且索引大小会比表还大。所以直接

 
2011年05月09日 星期一 13:23

 

TABLE_CC 表数据量 8KW

column: Art_id null number  --distinct values:214

column: User_id  not null number --distinct values: 83w

 

Index:

Idx_user

 
2010年01月29日 星期五 18:27
采用bulk collect可以将查询结果一次性地加载到collections中。而不是通过cursor一条一条地处理。可以在select into,fetch into,returning into语句使用bulk collect。注意在使用bulk collect时,所有的into变量都必须是collections.
 
举几个简单的例子:
--在select into语句中使用bulk collect
DECLARE
TYPE SalList IS TABLE OF emp.sal%TYPE;
sals SalList;
BEGIN
-- Limit th
 
2009年12月29日 星期二 21:25
--查看绑定变量的值可以通过视图v$sql_bind_capture 来获取

小测一下,记录之:
var v_id number;
var v_date varchar2(50);

exec :v_id := 509105861;
exec :v_date := '2009-12-26 12:37:51';

select * from tmp_xf_test where id =:v_id and gmt_create > to_date(:v_date ,'yyyy-mm-dd hh24:mi:ss');
---

1  SELECT hash_value,sql_id,NAME,POSITION,DATATYPE_STRING,LAST_CAPTURED,value_string FROM v$sql_bind_capture
2  WHERE hash_value = 615294788
 
2009年12月25日 星期五 14:50
摘录自Oracle Index Internals
Classic Oracle Index Myths
Oracle B-tree indexes can become “unbalanced” over time and need to be rebuilt
Deleted space in an index is “deadwood” and over time requires the index to be rebuilt
If an index reaches “x” number of levels, it becomes inefficient and requires the index to be rebuilt
If an index has a poor clustering factor, the index needs to be rebuilt
To improve performance, indexes need to be regularly rebuilt

I
 
2009年06月24日 星期三 22:26
该函数的语法:
DBMS_XPLAN.DISPLAY_CURSOR(
   sql_id        IN VARCHAR2 DEFAULT NULL,
   child_number IN NUMBER    DEFAULT NULL,
   format        IN VARCHAR2 DEFAULT 'TYPICAL');

举个例子 执行一个简单查询:
SQL> select count(0) from cat_product cp,cat_drug cd where cp.medical_id=cd.id;

COUNT(0)
----------
 

 
2009年06月22日 星期一 12:25
对于分表分库系统可能用到是否将分表条件传入的考虑,如果将分表条件传入sql的话,那么索引将不可避免的使用联合索引。
不将分表条件传入sql的话,对于分表的中间层来说效率是最高的,因为不再需要分析sql来判断使用哪个表,但这样对于应用来说就不够透明了。
现在只对这两种情况的索引效率做下对比。
########################
表数据量200W

单一索引
create index IDX_TMP_1 on tmp_xf(auc_id) compute statistics;

SQL> select * from tmp
 
2009年06月08日 星期一 13:56

1. 查询正在执行语句的执行计划(也就是实际语句执行计划)
select * from v$sql_plan where hash_value = (select sql_hash_value from v$session where sid = 1111);
其中id和parent_id表示了执行数的结构,数值最大的为最先执行

比如

ID PARENT_ID
-------------
0
1 0
2 1
3 2
4 3
5 4
6 3

则执行计划树为
######0
######1
######2
######3
###6######4 -----第二步
############5----第一步


2.如何设置自动跟踪
 
2009年04月15日 星期三 22:39
今天听了B2C 陈立同学的CBO体系结构的分享,收益颇多。 够我消化好一阵子了,很多东西是在不断的摸索中积累起来的。 向大牛们学习!

简单记录一下

基于规则的优化器
1: 通过rowid访问单笔记录
2: Single Row by Cluster Join
3: Single Row by Hash Cluster Key with Unique or Primary Key
4: 通过唯一索引或主键访问单笔记录
5: Clustered Join
6: Hash Cluster Key
7: Indexed Cluster Key
8: 复合索引扫描
9: 单列索引
 
2009年01月20日 星期二 15:40
 
2008年12月01日 星期一 14:53

比较大的开发项目,应该把业务逻辑放在应用中实现,切忌把业务放到触发器和存储过程中。 存储过程和触发器要少用,而且不能涉及业务

#######################################

大数据量update,可以考虑order by rowid

按照ROWID的结构,ROWID的顺序即是数据块的顺序,而CURSOR返回的记录的顺序即是更新的顺序,所以更新就会按数据块的物理顺序依次处理,即更新完一个数据块里的所有行,再更新下一个数据块的数据。这样一来,对于每个数据块,就只有第一行会产生物理读,其他的行,因为数据块已经在内存里

 
2008年11月25日 星期二 9:47

create table T1
(
ID   NUMBER not null,
NAME VARCHAR2(30) not null
);

create index D on T1 (name);

alter table T1 add constraint PK_T1_ID primary key (ID) ;

因为先建了索引(非unique),再加了主键,就算是用ID查询,也是使用 INDEX RANGE SCAN的。

下面先测试的就是索引为指定unique的情况

----------------------------------------------

测试逻辑读

orphean@ORCL

 
   
 
 
文章分类
 
   
 
文章存档
 
     
 
最新文章评论
  

关于spotlight,更多参考资料参考: http://www.innovatedigital.com/quest-spotlight
 

好文章。
 

好文~
 

mysql如果id递增的话,id越大越先被执行,但是执行顺序还是从上到下。
 

回复jenlin:手工测试的
   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu