返回

深入剖析GaussDB(DWS)的并发管控与内存管控策略

后端

并发管控:多维度的作业调度与资源分配

GaussDB(DWS)的并发管控分为两层:

  • 第一层:cn全局并发控制

负责全局范围内的并发请求管理,对所有作业进行统一调度和资源分配。cn会根据系统当前的负载情况,动态调整并发作业的数量,以确保系统稳定运行。

  • 第二层:资源池级别并发控制

负责资源池内部的并发请求管理。每个资源池都有自己的并发控制机制,可以根据资源池的当前负载情况,决定作业继续执行或者排队。

当一个作业提交到GaussDB(DWS)时,首先会经过cn全局并发控制的检查。如果系统当前的并发作业数目已经达到上限,则该作业会被排队等待。当系统负载降低时,该作业会被重新调度并执行。

如果作业通过了cn全局并发控制的检查,则会进入资源池级别并发控制的检查。资源池级别的并发控制会根据资源池当前的负载情况,决定作业继续执行或者排队。如果资源池当前的负载较低,则作业可以继续执行。如果资源池当前的负载较高,则作业会被排队等待。

GaussDB(DWS)的并发管控机制可以有效地防止系统过载,并确保系统稳定运行。

内存管控:保障性能的双重防护

GaussDB(DWS)的内存管控分为两部分:

  • 物理内存管理

负责物理内存的分配和回收。GaussDB(DWS)会根据系统当前的负载情况,动态调整物理内存的使用量。当系统负载较高时,GaussDB(DWS)会回收一部分物理内存,以腾出空间给更重要的任务使用。当系统负载较低时,GaussDB(DWS)会分配更多的物理内存,以提高系统的性能。

  • 内存池管理

负责内存池的创建和销毁。GaussDB(DWS)会根据不同的需求,创建不同的内存池。例如,GaussDB(DWS)会为查询创建一个内存池,为排序创建一个内存池,为哈希表创建一个内存池。每个内存池都有自己的大小限制,当内存池中的数据量超过了大小限制,则GaussDB(DWS)会将多余的数据溢出到磁盘上。

GaussDB(DWS)的内存管控机制可以有效地利用物理内存,并提高系统的性能。

负载管理:优化资源分配与作业调度

GaussDB(DWS)的负载管理分为三个部分:

  • 作业调度

负责作业的调度和执行。GaussDB(DWS)会根据作业的优先级、资源需求和系统当前的负载情况,决定作业的执行顺序。

  • 资源分配

负责资源的分配和回收。GaussDB(DWS)会根据作业的资源需求和系统当前的资源情况,为作业分配资源。当作业完成时,GaussDB(DWS)会回收作业所占用的资源。

  • 性能优化

负责系统的性能优化。GaussDB(DWS)会通过各种手段来优化系统的性能,例如,优化查询计划、优化内存使用、优化磁盘IO等。

GaussDB(DWS)的负载管理机制可以有效地优化资源分配和作业调度,并提高系统的性能。