资源管理简介
资源管理简介#
在任意时刻,OushuDB 中可能有很多个并发的查询在运行。这些查询属于不同的用户, 用户的优先级可能有高有低。我们需要一种方式来合理的给各个用户分配其可以使用的系统资源。
OushuDB使用虚拟计算集群 (Virtual Cluster) 以及资源队列(Resource Queues)来管理整个系统的资源。每一个 OushuDB 用户都和一个虚拟集群中的某个资源队列关联,该用户发出的查询会使用该关联的资源队列中的资源。在一个虚拟集群中,我们可以创建多个资源队列,资源队列之间互相独立,不构成影响限制。
初始化 OushuDB 时,vc_default.pg_default 是由系统默认创建的资源队列,oushu 用户和新创建的用户默认会使用此资源队列。此外,初始化 OushuDB 时还会为 oushu-topology.yaml 文件中定义的虚拟集群创建它们的 pg_default 资源队列。但在初始化之后,用户修改 oushu-topology.yaml 后,不会再自动创建资源队列。
下面的语句创建了一个资源队列 vc_default.ceo_report。指定了其最大的并发查询数为20。另外,该队列在单节点上可使用20GB内存。
CREATE RESOURCE QUEUE vc_default.ceo_report WITH (ACTIVE_STATEMENTS=20, MEMORY_LIMIT='20GB');
其中的两个配置参数的意义如下:
ACTIVE_STATEMENTS:资源队列允许的最大并发查询数,超过这个并发的连接则会排队等待。资源管理器会均匀分配资源到队列中并发的查询。
MEMORY_LIMIT:资源队列可以使用的内存
现在我们可以创建一个用户,使用该资源管理队列:
CREATE ROLE kurt WITH LOGIN RESOURCE QUEUE vc_default.ceo_report;
这样的话,kurt 用户发出的所有查询将使用 vc_default.ceo_report 中的资源。