hetu-core/hetu-docs/zh/sql/vacuum.md

72 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# VACUUM
## 摘要
``` sql
VACUUM TABLE table_name [FULL [UNIFY]] [PARTITION partition_value]? [AND WAIT]?
```
## 说明
大数据系统通常使用 HDFS 进行存储以实现数据在集群中各个节点之间的持久性、透明分布和均衡。HDFS 是一个不可变的文件系统,其间的数据不可编辑,只能追加。为了使用不可变的文件系统,不同的文件格式采用写入新文件以支持数据突变,随后使用异步后台合并来保持性能并避免产生许多小文件。
例如,在 Hive 连接器中,您可以逐行更新或删除 ORC 事务性表。不过,每当运行更新时,就会在 HDFS 文件系统中生成新的增量和 delete\_delta 文件。使用 `VACUUM` 可以将所有这些小文件合并成一个大文件,并优化并行性和性能。
**VACUUM 的类型:**
**默认**
可以将默认 VACUUM 视为合并表的小数据集的第一级。该操作经常发生,通常比 FULL VACUUM 更快。
*Hive*
在 Hive 连接器中,默认 VACUUM 对应于“轻量级压缩”。将所有有效的增量目录合并到一个压缩的增量目录中,并类似地将所有有效的 delete\_delta 目录合并到一个 delete\_delta 目录中。基本文件不会更改。一旦所有读取方都完成了对较小的旧增量文件的读取,就删除这些文件。
**FULL**
可以将 FULL VACUUM 视为合并表的所有数据集的下一级。与默认 VACUUM 相比,该操作发生的频率更低,完成时间也更长。
**FULL UNIFY**
UNIFY选项有助于将每个分区的多个桶文件合并为单个桶文件桶号为0。
*Hive*
在 Hive 连接器中FULL VACUUM 对应于“重量级压缩”。将所有基本文件和增量文件合并在一起。作为该操作的一部分,会永久删除已删除或更新的行。会从元存储中的事务表中删除所有中止的事务。一旦所有读取方都完成了对旧增量文件的读取,就删除这些文件。
`FULL` 关键字表示是否启动重量级压缩。如果没有该选项,它将执行轻量级压缩。
可以使用 `PARTITION` 子句来指定清理哪个分区。
可以使用 `AND WAIT` 来指定该 VACUUM 以同步模式运行。如果没有该选项,它将以异步模式运行。
## 示例
示例 1默认 VACUUM等待完成
``` sql
VACUUM TABLE compact_test_table AND WAIT;
```
示例 2对分区“partition\_key=p1”执行 FULL VACUUM
``` sql
VACUUM TABLE compact_test_table_with_partition FULL PARTITION 'partition_key=p1';
```
示例 3FULL VACUUM等待完成
``` sql
VACUUM TABLE compact_test_table_with_partition FULL AND WAIT;
```
示例 4对一个分区内的所有小文件进行Unify操作
```sql
VACUUM TABLE catalog_sales FULL UNIFY PARTITION 'partition_key';
```
## 另请参见
[UPDATE](./update.md)、[DELETE](./delete.md)