设为首页 收藏本站
查看: 761|回复: 0

[经验分享] Oracle 性能调优学习笔记(十四)-- 有效使用Oracle 存储结构

[复制链接]

尚未签到

发表于 2016-8-6 15:18:03 | 显示全部楼层 |阅读模式
  有效使用Oracle 存储结构
       表的种类: heap table,cluster table, IOT table,partition table;
       选择适当物理结构的影响因子
         1.查询或DML语句.
      2.表大小.
      3.行大小,row分组,block size.
      4.事物的大小
      5.并行查询.
       数据访问方式:
        1.索引
     2.B-Tre
     3.BitMap
     4.基于函数
     5.IOT
     6.cluster表.
    index cluster表的使用:
    1.create cluster mycluster (deptno number(2)) size 1024;
    
    2.create index myc_idx on cluster mycluster;
    3.create table deptInfo
      (
        deptid number(2) primary key,
     ename varchar(20) ,sal number,
     deptno number(2) references deptInfo(deptid)
       )cluster mycluster(deptno)
     /
     先读索引,在读数据.
    Hash clustered Tables
    1.create cluster hc(hk number) hashkeys 1000 size 8192;
    备注:hash的key的大小.
         size:hash的大小.
       hash 索引使用于等号的查询.
      
    分区表
     范围分区(Range Partition)
         create table sales(
       acct_no number(5),
       week_no number(2))
      partition by range(week_no)
      (
        partition p1 values less than (4) tablespace tbs1,
        partition p2 values less than (8) tablespace tbs2,
        partition p3 values less than (12) tablespace tbs4,
        .......................................
        partition p4 values less than (16) tablespace tbs5     
      )
      备份:1.分区键week_no
        2.子分区的表空间可以不一样.
        3.分区的各分区的大小一样.
      create tablespace tbs
        datafile ''
        size 200M
        extent management local uniform
        segment space management auto;
      
      创建分区
      create table range1
      (
        rk date,
        data,varchar(20)
      )
      partition by range(rk)
      (
         partition p1 less than (to_date('2011-12-31','yyyy-mm-dd')) tablespace train,
         partition p2 less than (to_date('2012-12-31','yyyy-mm-dd')) tablespace train1
      )
      查询分区信息
      select segment_name,partition_name,segment_type,tablespace_name from user_segments;
      查询分区数据
      select * from range1 partition(p1);
      修改分区
         alter table rang1
       add partition
       p3 values less than (maxvalue)  tablespace train;
       
     Hash分区(Hash Partition)
      create table empt
       (empno int,
        ename varchar(20)
        )
        partition by hash(empno)
        (
         partition p1 tablespace ts1,
         partition p2 tablespace ts2
        );
        建议分区的个数为幂数(2的n次幂数)个.
          数据分布通过分区键实现无法控制.
        当数据磁盘或者分区有问题.使用带分区的查看分区
        select * from empt partition(p1);
       
       
       
     List分区(List Partition)
        create table locations
        (location_id,
         street_address,
      state_province
      )storage(
        initial 10k
        next 20k
      )
      tablespace users
      partition  by list(state_province)
      (
         partition region_east values('MA','MY') tablespace tbs1,
         partition region_west values('CA','CK') tablespace tbs2,
         partition region_south values('QA','QY') tablespace tbs1,
         partition region_south values('KA','KY') tablespace tbs2,
         partition p3 values(default)
      );
      
      备注list 分区有default的,添加分区不容易.
     
     Composite分区(Compsite Partition)
      并行DML操作提高性能.
      支持本地组合索引.
       create table table1
       (
        range_key date,
        hash_key int,
        data varchar(20)
       )partition by range(range_key)
       subpartition by hash(hash_key) subpartitions 2
       (
        partition p1 values less than (to_date('2011-01-01','yyyy-mm-dd'))
         (
        subpartition h1,
        subpartition h2
         ),
         partition p2 values less than (to_date('2012-01-01','yyyy-mm-dd'))
         (
        subpartition h11,
        subpartition h22
         )
       );
     
            select segment_name,partition_name,segment_type from user_segments;
     
     
   分区索引
      本地索引
      create index local_idx01 on range1(a,b) local;
      分区索引
        create index gp_idx on range1(b) global
         partition by range(b)
         (
        partition idx1 values less than (1000),
        partition idx2 values less than (2000),
        partition idx3 values less than (maxvalue)
         );
        
                  select object_name,object_type from user_objects;
      
   收集统计分区信息       
        dbms_stats.gather_table_stats(
        ownname=>'',
     tabname=>'',
     partitionname=>'',
     granularity=>''
     );
   收集索引分区信息
        dbms_stats.gather_index_stats(
        ownname=>'',
     indexname=>'',
     partitionname=>''
     );   

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-253752-1-1.html 上篇帖子: RAC root.sh Oracle CRS stack is already configured and will be running under ini 下篇帖子: Oracle EBS之Oracle Forms中的"WHEN-LEAVE-RECORD"触发器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表