Tuning 14 Using Oracle Data Storage Structures Efficiently

image

image

90% 是Heap table

Cluster 集群表,

index-organized table: 就是把索引和表 和二为一了.

partitioned table:表非常大, 逻辑上是一个大表, 每个partition 又是一个小表

image

rows read in groups : 是不是一起读, 可以考虑 claster 表

image

image

unclustered: 一个Block 里只存储一个表的数据

可以看到图, 集群表的多个表数据是放在一个block上的.

image

image

首先创建一个集群, 创建cluster时可以指定存储信息, 注意在这个集群中的表就不要再指定存储信息了.

image

image

image

注意下边的 cluster mycluster(deptid);

image

image

hash函数得到的block时, 如果不同的key得到相同的block, 那么这时候就会有一个 overflow block 链表, 即多个数据的指针放在了这个block里, 所以好的hash函数会尽量较少这种数据间的”碰撞”

image

image

image

image

image

image

image

image

image

image

按照RANGE 来分区时, 可能数据不均匀, 比如上边的例子, 可能2009年多一些, 2010年少一些.

hash 我们无法控制某个数据放在某个分区, 是 oracle 帮我们分区的.

10g 以后也支持 global indexes 了

image

分区的个数, oracle 推荐 2的幂次方倍

image

image

可以看到分配的比较均匀, 并且数据时随机分布的, 以上是按照empno来进行hash的, 我们并没有看到什么规律.

image

很多值是离散的, 比如中国的省, 赣, 湘, 黑, 吉, 辽 等, 这些值是离散的, 没有办法向 range来进行比较, 所以list分区和range很相似, 只是它的值没有办法比较, 而是全部列出来.

image

image

image

把上面3种基本的分区组合起来, 目前分区是一维方式, 我们还可以在一个分区上再进行分区, 分出子分区, 这种情况用于特别大的表, 比如分区以后这个表还是非常非常的大, 那么我们还可以进行分出子分区.

image

partion在这里类似一个容器, 是一个逻辑概念。 它是用来存储

真正存储数据的是 subpartition.

image

local partioned index (OLAP)

image

global partion index (OLTP)

image

global norpartion index

image

local index

imagea,b 只表中的列

global nopartion index

imagedata 也是表中的列

global partion index

image

image

说白了就是在做查询时, 能够锁定在某个Partion中查找.

select * from range1 where a=1 and b=1;

image

Pstart , Pstop 表示起始 partion 和 结束 partion

所以这个查询语句就指搜索了一个partion.

image

image

image

image

转载于:https://www.cnblogs.com/moveofgod/p/3640715.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值