背景介绍
Holodesk表与Torc表delta跟base文件产生的条件不一样,其所有的写操作都会在底层写入一个新的文件,而不是写入已有文件中。其中,insert操作生成新的base文件, update/delete操作生成新的delta文件。当进行频繁的小数据量的写入操作,会导致出现大量的 base/delta 文件,并且内容很少(KB 级别),因此为了避免出现IO开销大,影响性能,内存占用高等一系列问题,小文件合并功能至关重要。
Holodesk表的合并由compact service组件执行,需要单独安装。
常见的小文件合并功能是通过计算引擎服务来执行 Compact 任务的,可能会占用部分计算资源。新推出的Compact Service则在组件级别做了隔离,开启后不会影响到Quark的查询计算性能,合并效果更好。
Compact类型
Holodesk中的Compact类型主要分为三类:minor,major,full。
Minor
将一个base文件下的多个delta文件合并成一个新的delta文件,并apply到原有的base文件上:
命令:alter table <table_name> compact 'minor';
Major
将一个base文件和它的所有delta文件合并成一个新的base文件:
命令:alter table <table_name> compact 'major';
Full
将多个小的base文件合并成一个新的base文件,并且会一并删除delta文件:
命令:alter table <table_name> compact 'full';