随着技术的发展和数据库部署规模的持续扩大,资源隔离的应用场景在数据仓库中变得越来越重要。如果数据量过大,ClickHouse无法灵活控制并发,将导致查询迅速占满集群资源,造成报错。同时,由于无法给特定业务预留CPU资源,后续查询的执行时间也会大幅增加。这些问题不仅影响了业务的稳定性,也限制了查询的效率。
ByteHouse是火山引擎推出的云原生数据仓库,以开源的ClickHouse为基础,经过字节跳动内部多年的优化和完善,提供了更丰富的功能和更强的性能,主要为用户带来极速的分析体验。
据了解,在字节跳动内部也存在数据量过大,ClickHouse无法满足资源隔离需求的问题。为了解决这一问题,火山引擎ByteHouse推出了Resource Group资源管理组件。
Resource Group资源管理组件的基本思路是将并发、内存、CPU等资源拆分给不同的资源组,通过资源组之间的关系调度共享资源能力。例如,当用户将查询提交给引擎时,依据规则评估是否能执行该查询,如果可以,查询将被直接执行;否则,查询将进入该资源组的等待队列,等待资源的释放。
这种方式存在以下优势:通过将并发、内存、CPU等资源拆分给不同的资源组,可以更加灵活地控制资源的分配,从而避免查询迅速占满集群资源的问题。其次,通过资源组的父子关系,可以实现不同资源组之间的资源共享,提高资源的利用率。
应用前:
应用后:
通过灵活的资源分配策略和高效的资源利用方式,ByteHouse的Resource Group能力可以提高查询的稳定性和效率,为用户提供更好的使用体验。
据介绍,上线前,用户每天的查询平均耗时在2.3s到14.1s之间,抖动剧烈,用户体验较差。而上线后,每天的查询平均耗时则在0.4s到1.7s之间,较好的保证了优先业务的查询资源,并且显著缩短了平均查询返回时间。