Vertica Eon 模式中分片、节点和 Depot 选择的最佳实践¶
作者:JiangChong | 发布时间:2026-05-22
⚠️ 本文更新说明:原文基于 Vertica Eon Mode Beta 版(约 2023 年)编写。随着 Eon 模式正式 GA 及后续版本迭代,部分信息已过时。本文已根据 Vertica 25.x / 26.x 官方文档和实际运维经验进行修订和补充。
Vertica Eon 模式允许您在云环境中使用分析数据库。在云环境中使用 Vertica 带来了新的关于如何最大化性能的问题。本文档提供了配置数据库以达到最佳效果的指南,阐述了如何为您的系统确定合适的分片(Shard)、节点(Node)和 Depot 数量。
我需要多少个分片?¶
所需分片数量(S)取决于数据被分割成多少段。在理想条件下,对于任何给定会话,每个节点将服务一个分片。因此,分片数量决定了工作负载的"节点并行度"。
例如:
- 如果有 6 个分片和 12 个节点,则只有 6 个节点参与查询处理。
- 如果有 6 个分片和 4 个节点,则 2 个节点被视为 DOWN,替代节点为该查询服务该分片。因此节点并行度永远不会超过 6。
您可以在数据库创建时设置分片数量:
注意: 更多的分片可能会提供更好的并行查询性能。然而,增加分片数量带来的收益是递减的。
分片与节点的比例建议¶
根据当前官方文档(Vertica 25.x / 26.x),分片数量的选择需遵循以下约束:
| 规则 | 说明 |
|---|---|
| 最佳性能 | 分片数 = 节点数(1:1)—— 这是基准线 |
| 推荐上限 | 不超过节点数的 2 倍(2:1) |
| 绝对上限 | 不超过节点数的 3 倍(3:1) |
| 可整除性 | 分片数应为节点数的约数或倍数,避免分布不均导致热点 |
官方原文:"For the best performance, the number of shards you choose for a namespace should be no greater than twice the number of nodes. At most, you should limit the shard:node ratio to no greater than 3:1."
分片数可以在创建后修改(Vertica 12.0+)¶
重要更新: 原文章称"分片数量在数据库创建时设置且之后无法更改"。此限制在 Vertica 12.0+ 版本中已被解除。您可以使用以下函数在线调整分片数:
何时考虑重新分片:
- 节点数量发生永久性大幅变化,需要优化分片:节点比例
- Catalog 大小因分片过多而增长过大
- 从 Enterprise 模式迁移后(分片数默认等于原节点数,可能需要优化)
注意事项:
RESHARD_DATABASE会获取全局 catalog 锁,建议在业务低峰期执行- 存储容器不会立即重新对齐,可执行
DO_TM_TASK('RESHARDMERGEOUT')加速 - 重新对齐完成前,查询性能可能受影响
分片数的实践经验¶
- 通常用户选择 6 到 16 之间的分片数量。
- 选择具有更多约数的分片数(如 6、8、12、24)以便未来灵活扩展。
- 使用 K-safety = 1 的生产环境至少需要 3 个主节点。
- 如果用户从现有的 Enterprise 模式集群迁移,分片数量默认等于 Enterprise 模式集群的节点数。
命名空间级分片(Namespace-Level Sharding,较新版本支持)¶
Vertica 支持多个命名空间各自使用不同的分片数量:
- 大表 / 复杂分析工作负载 → 使用较高的分片数
- 小表 / 简单仪表板查询 → 使用较低的分片数
- 将表大小与分片数对齐可以最小化 catalog 开销
我需要多少个节点?¶
在 Eon 模式下,添加和移除节点不需要执行昂贵的数据再平衡操作。因此,Vertica 预期节点数量会根据需求增加,并在不需要时减少。这一过程相当快速且具有弹性。
初始节点数量推荐(官方 25.3.x)¶
| 集群规模 | 工作数据量 | 推荐初始节点数 |
|---|---|---|
| 小型 | 最高 24 TB | 3 |
| 中型 | 最高 48 TB | 6 |
| 大型 | 最高 96 TB | 12 |
| 超大型 | 最高 192 TB | 24 |
对应地,中型集群(6 节点)建议初始分片数为 6,小型集群(3 节点)建议为 3(如需扩展可选 6)。
节点数量与分片数量的关系¶
确定节点数量(N)时,请考虑以下几点:
- 当 N = S 时,查询性能最佳;Vertica 将此视为基准。
- 当 N > S 时:
- 可以运行更大的工作负载(即更多查询)。
- Elastic Crunch Scaling (ECS) 会将分片责任分布在更多节点上。
- 单个查询的执行时间不会比基准有所改善,但并发吞吐量提升。
- 当 N < S 时,查询性能等于或低于基准。
- 分片数不能被节点数整除时,会导致分布不均,部分节点过载(热点问题)。
子集群(Subcluster)与吞吐量¶
Eon 模式支持创建多个子集群来隔离工作负载。您可以为不同 workload 创建专用子集群(如 ETL 子集群、查询子集群),并在不需要时缩减子集群。详见 Vertica 弹性伸缩功能介绍与配置 第 4.2 节。
每个节点需要多大的 Depot?¶
Depot(D)是一个最近最少使用(LRU)缓存。Vertica 使用卷大小的 80% 作为此缓存。
创建/修改 Depot¶
创建数据库时设置 Depot 位置和大小:
$ /opt/vertica/bin/admintools -t create_db -d eondb --hosts=eng1,eng2 --shard-count=6
--depot-path=/home/dbadmin/depot/ --depot-size=20G(可选)
您可以随时使用以下命令修改 Depot 设置:
=> SELECT ALTER_LOCATION_SIZE('/home/dbadmin/depot/', '', '60G');
=> SELECT ALTER_LOCATION_SIZE('/home/dbadmin/depot/', 'v_eon_walkthrough_db_node0001', '50%');
注意: 虽然存在修改 Depot 大小的功能,但 Vertica 建议不要频繁修改 Depot 大小。
Depot 大小计算¶
推荐的最小本地存储:每节点 2 TB
- 约 60% 用于 Depot(约 1.2 TB)
- 约 40% 用于 Catalog 和其他数据
理想 Depot 大小估算公式:
由于 Depot 作为本地缓存,较大的 Depot 可以提升查询性能。例如:
- 您的总数据库在 S3 上压缩后为 1.2 TB,并且有 6 个分片。
- 每个节点缓存 1.2 TB / 6 = 200 GB 的数据,以便能够缓存整个分片。
- 如果 Depot 卷为 250 GB,则整个分片(250 GB 的 80% = 200 GB)都适合 Depot 缓存。
- 通常一个节点至少缓存两个分片。因此 Depot 卷大小设置为 D = 500 GB(2 × 250 GB)是最优的,可以实现热 Depot 缓存上的所有操作。
- Depot 小于此值可能会导致缓存未命中,从而降低查询性能。
⚠️ 勘误: 原文此处将单位误写为 MB(200 MB、250 MB),实际应为 GB。已修正。
其他注意事项¶
- 建议使用实例/临时存储(ephemeral storage)作为 Depot。虽然也可以使用 EBS 卷,但成本更高且可能降低性能。
- 由于数据持久化在共享存储(S3/OSS/HDFS)上,EBS 卷提供的本地持久性不会带来额外性能收益。
- Vertica 建议不要对实例卷使用 RAID 或 LVM。应将其用作 ext4 分区。管理 LVM 和 RAID 所需的额外处理会产生不必要的开销。
监控 Depot 活动¶
使用以下系统表和 DC 表监控 Depot 活动:
-- 查看 Depot 缓存内容
=> SELECT * FROM vs_depot_lru;
-- 查看 Depot 驱逐历史
=> SELECT * FROM dc_depot_evictions;
-- 查看 Depot 从共享存储拉取数据(读)
=> SELECT * FROM dc_depot_fetches;
-- 查看 Depot 上传到共享存储(写)
=> SELECT * FROM dc_depot_uploads;
相关参考: 关于 Depot 带宽的监控和估算,另见 Vertica 节点与集群规模规划指南(含 Eon 模式网络带宽要求)。
结论¶
选择 N、S 和 D 是一个成本与性能的权衡。合适的数值取决于您对性能的要求以及愿意为此付出的成本。
核心建议总结:
- 分片数 = 节点数 为基准配置,不超过 2:1 为推荐上限
- 选择具有更多约数的分片数(6、8、12、24)便于未来扩展
- 每节点至少 2 TB 本地存储,其中约 60% 分配给 Depot
- 利用
RESHARD_DATABASE可在创建后调整分片数(Vertica 12.0+) - 利用多个命名空间为不同工作负载设置不同分片数(较新版本)
- 利用子集群隔离 ETL 和查询工作负载
关联文章:
- 在 Vertica 使用 COPY 加载数据 — 数据加载与 ETL 优化
- Vertica 节点与集群规模规划指南 — Eon 模式网络带宽与存储规划
- Vertica 弹性伸缩功能介绍与配置 — Enterprise 与 Eon 模式架构差异与迁移考量
- Vertica Eon 模式数据库的备份 — Eon 模式数据库备份
扩展阅读¶
- Vertica 弹性伸缩功能介绍与配置 — Enterprise 与 Eon 模式弹性伸缩完整指南
- Vertica 节点与集群规模规划指南 — 硬件选型与初始规模确定
- Vertica 冷热数据管理与成本优化 — Eon 模式弹性缩减计算资源配合冷数据策略
- Vertica 客户端连接负载均衡配置 — 子集群级别的连接路由与负载均衡