
# 配置Hive分区元数据冷热存储
#### 分区元数据冷热存储介绍
- 为了减轻元数据库压力，将长时间未使用过的指定范围的分区相关元数据移动到备份表，这一过程称为分区数据冻结，移动的分区数据称为冷分区，未冻结的分区称为热分区，存在冷分区的表称为冻结表。将被冻结的数据重新移回原元数据表，这一过程称为分区数据解冻。
- 一个分区从热分区变成冷分区，仅仅是在元数据中进行标识，其HDFS业务侧分区路径、数据文件内容并未发生变化。
  ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
  本特性仅适用于MRS 3.1.2及之后版本。
  
 
#### 冻结分区
支持创建表的用户按照条件过滤的方式对一个或多个分区进行冻结，格式为：freeze partitions *数据库名称.表名称* where *分区过滤条件*
例如：
**freeze partitions testdb.test where year \<= 2021;**
**freeze partitions testdb.test where year\<=2021 and month \<= 5;**
**freeze partitions testdb.test where year\<=2021 and month \<= 5 and day \<= 27;**
#### 解冻分区
支持创建表的用户按照条件过滤的方式对一个或多个分区进行解冻，格式为unfreeze partitions 数据库名称.表名称 where 分区过滤条件，如：
**unfreeze partitions testdb.test where year \<= 2021;**
**unfreeze partitions testdb.test where year\<=2021 and month \<= 5;**
**unfreeze partitions testdb.test where year\<=2021 and month \<= 5 and day \<= 27;**
#### 查询含有冻结数据的表
- 查询当前数据库下的所有冻结表： **show frozen tables**;
  
- 查询指定数据库下的所有冻结表： **show frozen tables in** *数据库名称*;
  
 
#### 查询冻结表的冻结分区
查询冻结分区：
**show frozen partitions** *表名*;
![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
- 默认元数据库冻结分区类型只支持int、string、varchar、date、timestamp类型。
- 外置元数据库只支持Postgres数据库，且冻结分区类型只支持int、string、varchar、timestamp类型。
- 对冻结后的表进行Msck元数据修复时，需要先解冻数据。如果对冻结表进行过备份后恢复操作，则可以直接执行Msck元数据修复操作，且解冻只能通过**msck repair**命令进行操作。
- 对冻结后的分区进行rename时，需要先解冻数据，否则会提示分区不存在。
- 删除存在冻结数据的表时，被冻结的数据会同步删除。
- 删除存在冻结数据的分区时，被冻结的分区信息不会被删除，HDFS业务数据也不会被删除。
- select查询数据时，会自动添加排查冷分区数据的过滤条件，查询结果将不包含冷分区的数据。
- show partitions table查询表下的分区数据时，查询结果将不包含冷分区，可通过**show frozen partitions** *table*进行冻结分区查询。
 
