资讯动态

【GaussDB】技术解读之GaussDB多租技术

发布时间:2026/8/17 23:55:34 来源:尧图企业网站定制
随着云计算时代的到来多租户的概念也逐渐广为人知。“多租户”使得租户之间可以共享物理资源能够帮助用户节约硬件成本和运维成本提高资源利用效率。同时在实现的过程中考虑到共享带来的安全、隔离等问题以及后续业务面临的扩展需求“多租户”在隔离性和扩展性方面也进行了相应的设计实现。那么在数据库领域是如何实现“多租户”呢业界有虚拟机多租、容器多租、数据库内核多租等多种技术可以实现多租户。虚拟机多租和容器多租顾名思义就是在一台物理服务器上部署多个虚拟机或者容器然后在虚拟机或者容器内进行数据库服务的部署。这类技术方案在安全性和隔离性方面具有天然的优势。数据库内核多租是由数据库内核提供的多租户特性。相比于虚拟机多租和容器多租内核多租没有虚拟化管理层、OSOperating System简称操作系统层、数据库公共层的额外开销而且底噪小在资源整合、资源的弹性伸缩等方面具备天然优势。数据库内核多租通过将数据库内核语义与成熟的资源隔离技术栈相整合实现更高的Scale-Down缩容能力极大地提升了数据库在计算资源方面的利用率。GaussDB支持被部署在虚拟机或者容器内给客户提供整体虚拟机/容器多租的解决方案同时也提供了数据库内核多租特性满足客户不同业务场景的需求。在客户资金充裕且对资源的隔离性、可靠性等要求更高的场景下可以选择虚拟器/容器多租方案在客户投入有限需要更大力度利用现有资源的场景下可以选择GaussDB数据库内核提供的多租方案。本文将对GaussDB数据库内核集中式场景下提供的多租技术进行重点介绍。GaussDB多租架构GaussDB多租是指在一个数据库实例中划分出多个逻辑处理单元我们称这个逻辑单元为PDBpluggable database每个PDB具备物理数据库的绝大多数能力同时相互隔离。在数据库初始化时会生成一个template pdb作PDB创建的模板。集群内可以创建多个资源计划每个资源计划下挂载多个plan directive每个plan directive对应一个PDBPDB通过plan directive配置自己的资源规格包括CPU、内存、IO等。图1 GaussDB多租架构一个PDB归属于一个独立的业务或公司。独立的业务或公司可以连接到自己的PDB运行数据库业务。GaussDB多租技术特点1.隔离性多租户架构的目的是为了让多用户或者多业务使用同一套数据库集群PDB数据的隔离性是实现该架构的基础。假设同一个公司的两个业务共享同一个数据库实例业务A的相关数据可以被业务B查看这是完全不可接受的行为。GaussDB数据库的PDB之间数据完全隔离实现租户数据完全独立、互不干扰保障租户数据的安全隐私1每个PDB除了有自己的表、索引等对象数据也有自己的用户、角色、表空间以及定时任务等对象。2除了数据库对象PDB的其它属性也完全隔离。比如每个PDB有独立的兼容模式、线程组、GUC配置参数等。图2 PDB之间数据完全隔离PDB之间数据互相隔离但用户业务开发并不需要感知是使用了一个PDB还是一个物理实例对用户业务开发来说使用PDB和使用物理实例的操作没有区别。2.PDB粒度的资源管理PDB资源的分配与变更由GaussDB内核接管并不依赖任何外部组件。每个PDB可以设置自己的资源规格包括CPU、内存以及IO。GaussDB内核通过资源计划管理所有PDB的资源每个资源计划包含了多个资源计划指令每个资源计划指令设置了一个PDB的资源规格。上层可以调用资源计划高级包接口完成资源的分配与变更。系统中可以有多个资源计划可以通过资源计划的切换做到一键切换所有PDB资源规格的能力。图3 PDB资源的变更和切换每个PDB的资源使用由GaussDB内核中的资源管理模块管理。相较于将资源分配交由外部组件虚拟机容器等管理GaussDB通过实现数据库内核的自主资源分配在保证租户资源按照配额公平使用的前提下也可获得以下优势1提高资源利用率租户间的后台工作整合通过合理的调度算法最大限度地利用系统空闲资源。2内核感知资源分配根据资源分配情况动态调整CPU占比内存大小以及线程池、连接池等资源最终获得更优的整体表现。3在物理机资源充足的情况下PDB的资源变更通过SQL语句即可完成实现资源秒级变更业务无感知。相比而言目前云上虚拟机的规格变更耗费时间较长需要先变更备机然后主备倒换然后进行其他变更操作端到端时间约为虚拟机关机 IaaS资源调度新虚拟机开机数据库拉起X 数据库节点个数。4内核中所有PDB公用一套系统资源有效的减少了内核底噪的资源占用。3.实例发放GaussDB内核多租技术的实例发放效率领先于其他的多租技术。以虚拟机多租为例虚拟机实例的发放需要先申请一定规格的虚拟机然后再部署GaussDB集群需要消耗10-30分钟或者更多的时间。而GaussDB内核多租技术内核中管理了PDB的创建/打开/关闭/删除。在物理机上部署GaussDB的基础上使用几个SQL语句即可完成这些操作秒级时间内即可实现实例的发放。4.GaussDB多租规格配置GaussDB多租支持的PDB规格配置见下表CPU1U2U4U8U16U内存8GB16GB32GB64GB128GB可以看到GaussDB支持1U1个CPU级别的PDB规格而当前虚拟机多租和容器多租一般只能提供8U级别的商用规格。这是因为数据库中通常存在很多后台任务以及运维任务需要维护整个集群的正常运行。以GaussDB为例存在auto vacuum、慢/全量SQL收集等后台任务。数据库管控层的实例指标监控也需要连接到数据库收集信息。例如TPSQPS等。这些任务都需要消耗CPU故虚拟机/容器实例做到更小规格例如2U基本不太可能。而内核多租是在GaussDB进程中划分了多个逻辑实例所有逻辑实例共享同一份后台任务管控的指标监控连接一次就可以收集到所有PDB的数据大大减少了数据库底噪因此内核多租可以很好的支持1U逻辑实例的发放。另外GaussDB后续会继续优化PDB规格。比如后续计划支持1U4G的PDB规格以满足更多客户场景的需求。5.支持PDB关闭对于不需要一直运行的数据库业务GaussDB支持关闭该业务的PDB并释放资源。关闭PDB非常简单内核中只需要执行语句ALTER PLUGGABLE DATABASE [pdbname] CLOSE语句即可。PDB关闭即意味着业务无法连接到这个逻辑实例用户可以释放PDB的CPU、内存、IO资源对不使用的资源不计费实现节约成本。6.WDR报告中PDB相关增强GaussDB在WDR(Workload Diagnosis Report 负载诊断报告)工具中适配了多租特性可在WDR报告中查看PDB信息以及PDB级别的SQL Statistics等性能数据视图。1WDR报告中的PDB信息章节2WDR报告SQL统计信息章节如下图所示细化的统计信息中添加了“DB Name列”PDB归属信息会显示在该列。3SQL Detail和Object Stats等章节中也添加了PDB信息在此不一一列举。添加了PDB信息的WDR报告可方便DBA了解指定时间段内PDB级别的系统资源使用情况以及数据库运行情况进行相应的运维处理。总结GaussDB内核提供的多租技术特性在安全隔离的前提下具备更高的资源利用效率更快的实例发放效率和资源变更效率。同时将租户相关的信息集成到WDR报告中可以提升了客户运维的便利性。因此客户可根据自身企业的组织结构匹配相应的多租户配置更高效地利用现有资源为企业节约成本。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价