• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Oracle Database Partition 技术

mysql 搞代码 4年前 (2022-01-09) 17次浏览 已收录 0个评论

分区就是将一个非常大的table或者index 按照某一列的值,分解为更小的,易于管理的逻辑片段—分区。将表或者索引分区不会影响SQ

Partition介绍

分区就是将一个非常大的table或者index 按照某一列的值,分解为更小的,易于管理的逻辑片段—分区。将表或者索引分区不会影响SQL语句以及DML语句,就和使用非分区表一样,每个分区拥有自己的segment,因为,DDL能够将比较大的任务分解为更小的颗粒。分区表只有定义信息,只有每个存放数据的分区才有各自的segment。

就好象拥有多个相同列名,列类型的一个大的视图。

收益

使用分区功能,可以提供的收益,可以从下面几个方面阐述:

性能

可以减少检索数据的总量,因为拥有partitionpruing 以及partition-wise joins。

partition pruing:当谓词中(连接条件)带有partition key的时候,OracleDatabase可以自动的将不需要的partition裁剪掉,不需检索额外的partition 。

partition-wise joins:两个表做join的时候,partitionkey 作为连接条件,OracleDatabase可以将连接操作分成多个单表和每个partition的join piece。对于单线程来说,每次join的工作量小了,可以减少系统的开销。而对于多线程来说,每个join piece 都可以使用多线程,可以加快检索时间(但是消耗更多的cpu)。

管理

使用分区技术,可以将管理维护大表或者索引的操作,分成多个维护片段,可以更灵活的管理和维护这些schema object。举个具体的例子来说,这里有一个装有重要文件的重达100公斤的箱子,你需要将它搬到办公室去,这是非常累的,甚至是无法达成的。但是如果使用了分区技术,等于将100公斤的箱子10等分,这时候,就可以每次搬一个小箱子即可。

可用性

因为分区表中的每个分区在物理层面上都是隔离的——每个分区拥有自己的segment。所以当其中的一个分区不可用的时候,不会影响另外的分区。

Partition 分类

Partition可以简单分为范围、哈希、列表三种方式。以下说明了每种分区方式的适用场景。

Range Partitioning 适用场景

Range Partitioning 比较适用时间列,当然也有其他的适用场景,比如说那些连续的C来2源gaodaima#com搞(代@码&网olumn Value映射的行有特殊意义的,人的年龄、商品价位等。

11g开始,,支持一种新的RangePartition方式,Interval partition,它可以根据选项自动创建需要的分区。

List Partitioning适用场景

  • 相对于Range Partition ,适合分散的Column Value 映射的行有特殊意义的情况。比如说统计国内数据,可以使用区域来创建分区。这样可以在加载或者统计区域数据的时候更加有效率。
  • Hash Partitioning适用场景

  • 这个分区比较适合平均I/O的场景。比如说,有一个大表,经常被访问,那么大表所在的表空间上面的I/O操作将非常频繁,这个时候可以将Hash Partition 放在不同的表空间上(表空间在不同的物理磁盘上),平均每个磁盘上面的I/O负载。防止单一磁盘I/O负载过高的情况。(Hash partition 也支持partition pruing ,但这无疑是没有意义的)

  • 搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
    转载请注明原文链接:Oracle Database Partition 技术

    喜欢 (0)
    [搞代码]
    分享 (0)
    发表我的评论
    取消评论

    表情 贴图 加粗 删除线 居中 斜体 签到

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址