使用子群集提高查询吞吐量
提高查询吞吐量会同时增加 Eon 模式数据库处理的查询数量。当您的工作负载包含多个短期运行的查询时,您通常会担心数据库的吞吐量。它们通常被称为“仪表板查询”。该术语描述了当大量用户打开基于 Web 的仪表板页面以监控某种状态时您看到的工作负载类型。这些仪表板往往会频繁更新,使用较简单的短期运行的查询,而不是分析量繁重的长期运行查询。
提高数据库吞吐量的最佳方法是向数据库添加新的子群集或启动任何停止的子群集。然后使用连接负载均衡策略在这些子群集之间分配客户端连接。子群集独立处理查询。通过添加更多子群集,您可以提高数据库的并行度。
为获得最佳性能,应使子群集中的节点数与数据库中的分片数相同。如果您选择的节点数少于分片数,请将节点数设为分片数的偶数除数。当分片数可以被节点数整除时,数据库中的数据就会在子群集中的节点之间平均分配。
添加子群集的最简单方法是使用 MC:
-
在 MC 主页中,单击要将子群集添加到的数据库。
-
单击管理 (Manage)。
-
单击添加子群集 (Add Subcluster)。
-
按照向导中的步骤添加子群集。通常,您需要填写的唯一项目是子群集名称和要添加到其中的实例数。
注意
MC 目前不支持在所有平台上创建实例。对于 MC 不支持实例的平台,您可以手动添加子群集。有关详细信息,请参阅创建子群集。在吞吐量子群集之间分配客户端
要从添加的子群集中获益,您必须让执行短期查询的客户端连接到子群集包含的节点。查询仅在包含启动程序节点(客户端连接到的节点)的子群集上运行。使用连接负载均衡策略将连接分布在您创建的所有子群集中,以提高查询吞吐量。有关详细信息,请参阅连接负载均衡策略。
以下示例创建了一个负载均衡策略,该策略将客户端连接分布在两个名为 query_pool_a 和 query_pool_b 的三节点子群集中。此示例:
-
在两个子群集中的六个节点上创建网络地址。
-
从两个子群集中的所有节点创建一个负载均衡组。
-
创建路由规则以将所有传入连接重定向到两个子群集。
=> CREATE NETWORK ADDRESS node04 ON v_verticadb_node0004 WITH '203.0.113.1';
CREATE NETWORK ADDRESS
=> CREATE NETWORK ADDRESS node05 ON v_verticadb_node0005 WITH '203.0.113.2';
CREATE NETWORK ADDRESS
=> CREATE NETWORK ADDRESS node06 ON v_verticadb_node0006 WITH '203.0.113.3';
CREATE NETWORK ADDRESS
=> CREATE NETWORK ADDRESS node07 ON v_verticadb_node0007 WITH '203.0.113.4';
CREATE NETWORK ADDRESS
=> CREATE NETWORK ADDRESS node08 ON v_verticadb_node0008 WITH '203.0.113.5';
CREATE NETWORK ADDRESS
=> CREATE NETWORK ADDRESS node09 ON v_verticadb_node0009 WITH '203.0.113.6';
CREATE NETWORK ADDRESS
=> CREATE LOAD BALANCE GROUP query_subclusters WITH SUBCLUSTER query_pool_a,
query_pool_b FILTER '0.0.0.0/0';
CREATE LOAD BALANCE GROUP
=> CREATE ROUTING RULE query_clients ROUTE '0.0.0.0/0' TO query_subclusters;
CREATE ROUTING RULE
重要
在将要从专用网络外部连接客户端的云环境中,在创建网络地址时对每个节点使用外部 IP 地址。否则,外部客户端将无法连接到节点。
如果您同时拥有内部和外部客户端,请为每个节点设置两个网络地址,并将它们添加到两个单独的负载均衡组:一个用于内部客户端,另一个用于外部客户端。然后创建两个路由规则,一个将内部客户端路由到内部组,另一个将外部客户端路由到外部组。使内部客户端的路由规则仅应用于您的内部客户端将从其中连接的虚拟专用网络(例如,10.0.0.0/8)。外部客户端的路由规则可以使用 0.0.0.0/0 CIDR 范围(所有 IP 地址)作为传入连接地址范围。这些规则将一起正常工作,因为更具体的内部客户端路由规则优先于限制较少的外部客户端规则。
创建策略后,任何选择负载均衡的客户端都将重定向到两个子群集中的节点之一。例如,当您使用带有 -C 标志的 vsql 连接到群集中的节点 1(IP 地址为 203.0.113.1)时,您会看到类似如下的输出:
$ vsql -h 203.0.113.1 -U dbadmin -w mypassword -C
Welcome to vsql, the Vertica Analytic Database interactive terminal.
Type: \h or \? for help with vsql commands
\g or terminate with semicolon to execute query
\q to quit
SSL connection (cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, protocol: TLSv1.2)
INFO: Connected using a load-balanced connection.
INFO: Connected to 203.0.113.7 at port 5433.
=>
连接负载均衡策略考虑了在选择节点来处理客户端连接时停止的节点。如果您在低需求期间关闭一个或多个子群集以节省资金,那么只要某些节点仍处于运行状态,您就无需调整负载均衡策略。