Heim  >  Artikel  >  Datenbank  >  Oracle分区和性能简析

Oracle分区和性能简析

WBOY
WBOYOriginal
2016-06-07 14:59:081031Durchsuche

欢迎进入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] 

Oracle分区和性能简析

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn