使用Serverless Computing执行Compaction任务

Hologres的文件合并(Compaction)任务通常会占用实例的计算资源,可能影响其他读写请求。自Hologres V3.1.11版本起,支持在使用Serverless资源执行数据导入的同时,利用同一份Serverless资源同步完成Compaction操作,从而避免占用实例计算资源,保障其他任务的性能。

使用方法

-- Session级别使用
SET hg_serverless_computing_run_compaction_before_commit_bulk_load = on;

-- User级别使用
ALTER USER "<role_name>" IN DATABASE <db_name> SET hg_serverless_computing_run_compaction_before_commit_bulk_load = on;

-- DB级别使用
ALTER DATABASE <db_name> SET hg_serverless_computing_run_compaction_before_commit_bulk_load = on;

使用限制:

  • 该功能会少量增加数据导入时长,但可极大提升实例稳定性。

  • 仅支持对新数据文件的同步Compaction。如果表存在旧文件TTL过期需Compaction清理文件,仍会使用本实例资源异步执行。

  • 同步Compaction仅支持导入热存(标准存储),暂不支持导入冷存(低频访问存储)。

使用示例

通过HoloWeb一键导入公共数据集功能,导入TPC-H 100 GB数据集。

  • DB级别关闭本功能,而后执行公共数据集导入任务。

    ALTER DATABASE <db_name> SET hg_serverless_computing_run_compaction_before_commit_bulk_load = off;
  • DB级别开启本功能,再次执行同一个公共数据集导入任务。

    ALTER DATABASE <db_name> SET hg_serverless_computing_run_compaction_before_commit_bulk_load = on;

两次导入任务均完成后,观察实例的监控指标,可见导入任务在正常使用Serverless计算资源执行,同时Compaction任务完全没有使用本实例计算组的计算资源。

  • 计算组CPU使用率

    image

  • 导入任务QPS

    image

  • Serverless Computing资源使用率

    image