弹性

弹性是指通过添加或移除节点来调整数据库适应不断变化的工作负载需求的能力。当数据库遇到高需求时,可以添加新节点或启动已停止的节点,以增加可用的计算量。当数据库遇到较低需求时(例如在节假日或周末),可以停止或终止节点以节省资金。还可以随着数据库需求的增长而逐渐添加节点。

Eon 模式数据库中的所有节点都属于一个子群集。通过选择哪些子群集获得新节点,可以影响新节点对数据库的影响。将节点添加到数据库时,可以实现两个目标:

  • 提高查询吞吐量:更高的吞吐量意味着数据库同时处理更多查询。当您有“仪表板查询”(许多运行时间相对较短的查询)工作负载时,您通常希望提高吞吐量。在这种情况下,加快单个查询的处理速度不如让更多查询并行运行重要。

  • 提高查询性能:更高的查询性能意味着复杂的深入分析查询完成得更快。

针对查询吞吐量进行扩展

要针对查询吞吐量进行扩展,请在一个或多个新 子群集中向数据库添加额外的节点。子群集独立处理查询:查询仅在包含启动程序节点的子群集中的节点上运行。通过添加一个或多个子群集,数据库可以同时处理更多查询。为了获得最佳性能,请向每个新子群集中添加与数据库中的分片数量相同的节点数量。例如,如果数据库中有 6 个分片,则向您创建的每个新子群集中添加 6 个节点。

为了利用新子群集提供的更高吞吐量,客户端必须连接到它们。要确保用户利用您为扩展吞吐量而添加的子群集,最佳方法是创建连接负载均衡策略,将客户端连接分散到所有这些子群集中的所有节点上。有关详细信息,请参阅连接负载均衡策略

子群集还将节点组织到可以轻松地一起停止或启动的组中。此功能使扩展和收缩数据库更加轻松。有关详细信息,请参阅启动和停止子群集

针对查询性能进行扩展

要提高子群集中单个查询的性能,请向其中添加更多节点。当有更多的计算能力可用于处理查询时,查询的执行速度会更快。

如果子群集中的节点数少于数据库中的分片数,则添加节点特别有效。在这种情况下,节点负责处理多个分片中的数据。当添加更多节点时,新添加的节点会接管一些分片的责任。由于要处理的数据变少,因此每个节点可以更快地完成其查询部分,从而提高整体性能。为了获得最佳性能,请将子群集中的节点数设置为数据库中分片数的偶数除数(或等于分片数)。例如,在 12 分片数据库中,请将子群集中的节点数设置为 3、6 或 12。

您可以通过添加比数据库中的分片更多的节点来进一步提高查询性能。当节点数量超过分片数量时,子群集中的多个节点订阅同一个分片。在这种情况下,当处理查询时,Vertica 使用一种称为弹性处理扩展 (ECS) 的功能让子群集中的所有节点都参与查询。ECS 将每个分片中的数据子集分配给分片的订户。例如,在一个三分片数据库的六节点子群集中,每个分片有两个订户。在查询期间,ECS 为每个订户分配分片中一半的数据进行处理。在大多数情况下,由于要处理的数据更少,节点可以更快地完成查询的执行。当向子群集中添加比分片数更多的节点数时,请将节点数设置为分片数的倍数,以确保均匀分布。例如,在三分片数据库中,将子群集中的节点数设置为 6、9、12,依此类推。

对不同的查询类型使用不同的子群集

您不必在数据库中选择一种弹性形式,而舍弃另一种形式。您可以创建一组子群集用于提高查询吞吐量,并创建一个或多个子群集用于提高查询性能。两种子群集类型之间的区别主要在于您创建的子群集数以及它们包含的节点数。要提高吞吐量,请添加多个子群集,其中包含的节点数等于或小于数据库中的分片数。添加的子群集越多,实现的吞吐量就越大。要提高查询性能,请添加一个或多个子群集,其中节点数是数据库中分片数的倍数。

创建一组子群集后,必须根据将运行的查询类型,让客户端连接到正确的子群集。对于频繁执行简单仪表板查询的客户端,请创建一个连接负载均衡策略,以将客户端连接到吞吐量扩展子群集中的节点。对于运行更复杂分析查询的客户端,请创建另一个负载均衡策略,以将客户端连接到性能扩展子群集中的节点。

有关扩展 Eon 模式数据库的详细信息,请参阅扩展 Eon 模式数据库