本文主要介绍“什么是交换分区”。在日常操作中,相信很多人对什么是Exchange Partition都有疑问。边肖查阅了各种资料,整理出简单易用的操作方法,希望能帮你解答“什么是交换分区”的疑惑!接下来,请和边肖一起学习!
Pruning分区剪辑是执行计划中的内容。您不需要自己设置任何东西(当您在选择表时没有指定分区名时)。优化器可以根据分区键从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实现自动子表分区(不管子表是否有分区键)。ReferencePartition之后,同一主表分区中的数据记录和对应的子表记录都在同一子表分区中。Exchange Partition
交换分区是分区和实体表之间的数据交换。分区的数据到达实体表,实体表的数据到达分区。
您可以通过交换分区(或子分区)的数据段其实就是类似改了下数据字典,把分区和实体表的segment头部换了下,数据存放的block没有动,将分区(或子分区)转换为非分区表,并将非分区表转换为分区表的分区(或子分区)
现实中使用Exchange Partition的常见场景如下:比如有两个分区表,一个是历史表,一个是当前表,所以需要定期将半年前当前表的数据导入到历史表中。我该怎么办?
因为分区表不能直接用分区表交换数据,所以我们可以使用Exchange Partition的功能,用空的实体表作为中转,将当前表半年前的分区导入到实体表中,然后将每个实体表的数据导入到历史表的空的新分区中(使用空实体表的原因是当前表和实体表交换时,不会有数据写入到当前表中,然后在Exchange之后会新建实体表和历史表。
分区表A会向分区表b传输一些数据。
1.表A和表B中表结构字段的顺序和名称应该相同。
2.如果两个分区都是区间的,则不能保证两个分区的分区名相同。
原因是间隔由系统自动命名。中间表转移到目标表时,目标表必须有分区名才能转换,但是目标表的分区名怎么能和源表的分区名一样呢?
至此,“什么是交换分区”的研究结束,希望能解决大家的疑惑。理论和实践的结合可以帮助你学得更好。去试试吧!如果你想继续学习更多的相关知识,请继续关注网站,边肖会继续努力,给大家带来更多实用的文章!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/140988.html