1. 分区表概念
分区表就是将表在物理存储层面分成多个小的片段,这些片段即称为分区,每个分区保存表的一部分数据,表的分区对上层应用是完全透明的,从应用的角度来看,表在逻辑上依然是一个整体。
每个分区都有自己的名字并可以拥有不同的存储特性,例如可以将分区保存在不同的磁盘以上分散I/O,或者分散在不同的表空间(表空间需要有相同的block size)。
向分区表插入数据时,为了判断每条数据应该被分配至哪个分区,我们通常需要选择定义一个分区键(Partition Key)。根据每条数据分区键的值或者对其运算的结果来决
定数据的分区归属,分区键可以由1或多个列组成(最多16个列)。
2. 何时使用分区表
知道了分区表的概念,那么什么情况下应该使用分区表呢?如果遇到如下几个场景你可以考虑使用分区表:
a.表的大小超过2G
b.表中有大量的历史数据,数据存在明显的时间顺序
c.表的存储必须分散在不同的存储设备上
3. 分区表的优点
分区表在结构和管理上比普通表更复杂,但它也有一定的优点,主要优点有以下3类:
3.1 提升SQL查询性能
对于 SQL查询 ,当where条件涉及分区键时,可以快速定位需要扫描的分区,这样可以将数据的扫描范围限制在很小的范围,极大的提升查询性能。这个特性叫做分区裁剪(Partition Pruning)。
另外,在多表连接(join)时,如果在每个表在连接的键上都进行了分区,那么Oracle可以将两个大表之间的连接转换成更小的分区级连接,极大提升连接速度,这个特性叫做分区连接(Partition-wise Join)。
3.2 提升表可管理性
使用分区表之后,原来表级别的管理操作也被分散为至“分区级”,各个分区上独立的进行运维任务,原先一个大表上的运维任务,现在可以拆开成一系列小任务分散在不同的时间窗口执行。例如,平时备份表的操作,现在可以备份单个分区。
3.3 提升数据可用性
当表分区后,每个分区都具有独立性。在你操作某个分区时,不会影响其他分区数据的使用,即使某个分区因为故障不可用,也完全不会影响其他分区上运行的事务。同时分区可以存储在不同的表空间/物理介质上,分散I/O压力。
最后编辑:严锋 更新时间:2024-07-02 19:04