热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Oracle分区和性能简析

欢迎进入Oracle社区论坛,与200万技术人员互动交流进入理论上,我们进行表分区都是为了提升性能,加快查询速度。但是有的时候,不但不能加快查询速度,反而拖累的查询速度。下面举的一个例子就是这样的:假设某一个表是按照主键散列分区,创建表如下所

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 理论上,我们进行表分区都是为了提升性能,加快查询速度。但是有的时候,不但不能加快查询速度,反而拖累的查询速度。下面举的一个例子就是这样的: 假设某一个表是按照主键散列分区,创建表如下所

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

理论上,我们进行表分区都是为了提升性能,加快查询速度。但是有的时候,不但不能加快查询速度,反而拖累的查询速度。下面举的一个例子就是这样的:

假设某一个表是按照主键散列分区,创建表如下所示:

Sql代码

create table t

( OWNER, OBJECT_NAME, SUBOBJECT_NAME, OBJECT_ID, DATA_OBJECT_ID,

OBJECT_TYPE, CREATED, LAST_DDL_TIME, TIMESTAMP, STATUS,

TEMPORARY, GENERATED, SECONDARY )

partition by hash(object_id)

partitions 16

as

select * from all_objects;

我们经常要在表上面,根据owner 或者 object_type,object_name 或者owner, object_type,object_name进行查询。于是我们想到在这三列上建立一个局部索引。如下所示:

Sql代码

create index t_idx

on t(owner,object_type,object_name)

LOCAL

运行一个存储过程收集cpu耗用等信息:

Sql代码

begin

dbms_stats.gather_table_stats

( user, 'T', cascade=>true);

end;

/

改变几个会话属性,便于允许TKPROF

Sql代码

alter session set timed_statistics=true;

alter session set events '10046 trace name context forever,level 12';

执行如下SQL语句:

Sql代码

select * from t where owner='SCOTT' and object_type = 'TABLE' and object_name = 'EMP';

select * from all_objects where owner='SCOTT' and object_type = 'TABLE' and object_name = 'EMP';

[1] [2]


推荐阅读
author-avatar
LIN-少爷
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有