openGauss
分区表实现大数据量快速转移
随着现代信息数据的快速增长,数据库的数据量也不断增长。对于庞大的数据如何管理呢
从数据库角度看,分区表无疑是一种很好的选择。
对于很多业务,只会访问最近几天或几个月的数据,对于之前的数据很少甚至几乎不访问
这就形成了热数据和冷数据。使用分区表可以隔离开热数据和冷数据,加快访问速度。最
典型的就是按照时间分区,每个分区设置一个时间段,在此时间段内的数据存储在此分区
中,这样在数据处理的过程中可以筛掉大量的冗余数据。
如何从普通表转换为分区表呢?这不得不提分区表的一个黑科技了–分区交换技术。
分区交换技术:将一个分区和一个普通表的数据进行交换,达到快速导入数据进入分区表
的目的。
分区交换技术原理和约束:分区交换技术并不是用常规的
insert
、
select
语句进行数据导
入导出的,而是通过修改数据对象的数据物理位置,所以实际执行速度非常快,不用担心
阻塞业务。对于数据交换的两个表需要保证约束一致,否则数据导入后将会毫无意义。数
据 交 换 后 , 普 通 表 和 分 区 的 统 计 信 息 变 得 不 可 靠 , 需 要 对 普 通 表 和 分 区 重 新 执 行
analyze
。
分区交换的主要步骤如下:
1.
准备源表和新的分区表
2.
基于源表元数据创建分区表以及相关索引、约束等
3.
使用分区交换的语法将普通表的数据导入到分区表中
4.
收集统计信息。
openGauss
的分区交换使用方法
语法如下:
ALTER TABLE [ schema. ] table
EXCHANGE { partition_extended_name }
WITH TABLE [ schema. ] table
[ { WITH | WITHOUT } VALIDATION ] [VERBOSE]
VALIDATION
代表是否要对数据进行检查,如果有数据不满足分区要求会进行报错处理。
如果不指定
VALIDATION
子句,则默认进行
VALIDATION
。
如果确认所有数据都满足分区要求才可以指定
WITHOUT VALIDATION
,否则数据将不可
用。
如果不指定
VERBOSE
选项,则对不符合目标分区的记录,进行报错处理,不自动重路由
至其他目标分区。如果指定
VERBOSE
,会将不符合目标分区的记录路由到对应的分区,
如果不存在对应的分区才进行报错处理。
建表准备数据
评论