Exchange Partition是什么

这篇文章主要介绍“Exchange Partition是什么”,在日常操作中,相信很多人在Exchange Partition是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Exchange Partition是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Pruning
分区裁剪就是执行计划里面的东西,不用自己去设置什么(select table时不指定的分区名的情况下),优化器可以自动从FROM和WHERE字句里根据分区键提取出需要扫描的分区,从而避免全表扫描,减少扫描的数据块,提高性能。相关的字段dba_tab_partitions.partition_name、dba_tab_partitions.partition_position。

分区裁剪分为静态和动态,静态分区裁剪发生在编译阶段,动态分区裁剪发生在执行阶段
静态裁剪:就是oracle知道走哪几个分区,比如where 条件过滤后知道某个分区,执行计划的pstart和pstop显示具体分区号
动态裁剪:如果在解析阶段无法知道需要扫描多少分区,只有在运行时才能确定,执行计划的pstart和pstop显示KEY(SQ)或:BF0000

PARTITION RANGE ALL:扫描所有分区(具体哪些分区可参考执行计划中Pstart、Pstop两个字段)
PARTITION RANGE SINGLE:扫描单个分区(具体哪些分区可参考执行计划中Pstart、Pstop两个字段)
PARTITION RANGE ITERATOR:扫描多个分区再做分区合并(具体哪些分区可参考执行计划中Pstart、Pstop两个字段)

Reference Partition
Reference Partition针对的业务场景是主外键关联。主表分区之后,借助Reference Partition可以实现自动的子表分区(不管子表上有无分区键)。经过Reference Partition分区之后,在同一个主表分区中的数据记录,对应到的子表记录,全部都在相同的子表分区上。

Exchange Partition
Exchange Partition就是某个分区和实体表进行数据交换,分区的数据到了实体表,实体表的数据到了分区
You can convert a partition (or subpartition) into a nonpartitioned table, and a nonpartitioned table into a partition (or subpartition) of a partitioned table by exchanging their data segments
其实就是类似改了下数据字典,把分区和实体表的segment头部换了下,数据存放的block没有动

现实中使用Exchange Partition常见的场景如:比如有两张分区表,一张是历史表,一张是当前表,需要定期把当前表6个月前的数据导入历史表怎么弄呢?
因为分区表无法直接和分区表进行数据交换,所以我们可以使用Exchange Partition的功能,使用空的实体表做中转,把当前表6个月前的一个个分区导入到一个个实体表中,再把一个个实体表的数据导入历史表的一个个空的新建分区(使用空的实体表原因是,当前表和实体表做Exchange时,不会有数据写入当前表,Exchange后实体表再和历史表的空的新建分区Exchange时,实体表又变成了空表)

分区表A要把一些数据迁移到分区表B
1、A表和B表的表结构字段顺序和字段名称要一样
2、如果两个分区都是interval的话,是无法保证两个分区的分区名字一样的
原因是interval是系统自动命名的,中间表转移到目标表时,目标表必须存在一个分区名字,才能转换过去,但是目标表的分区名字怎么可能会和源表的分区名字一样呢

到此,关于“Exchange Partition是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注蜗牛博客网站,小编会继续努力为大家带来更多实用的文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论Telegram