Redshift RG 实例实战:Graviton 驱动下查询性能 2.4 倍提升全记录

每月 Redshift 账单又涨了。RA3 集群跑了两年,数据量从 5TB 涨到 40TB,查询性能肉眼可见地下降。加节点?预算不批。换方案?迁移成本太高。

亚马逊云科技上周发布了 Redshift RG 实例——Graviton 芯片驱动,性能比 RA3 快 2.4 倍,每 vCPU 价格还降了 30%。说白了,又快又便宜。我花了两天做完迁移测试,这篇记录全过程。

RG vs RA3:到底快在哪

对比项 RA3 RG 变化
芯片架构 x86 (Intel) ARM (Graviton) 换代
数据仓库查询性能 基准 2.4x +140%
每 vCPU 价格 基准 -30% 降价
数据湖查询引擎 需 Spectrum 外挂 内置矢量化引擎 集成
Iceberg 支持 Spectrum 有限支持 原生集群节点处理 大幅增强
Parquet 处理 S3 扫描 集群节点本地处理 低延迟

核心变化两个:

  1. Graviton 芯片:ARM 架构本身能效比高,加上 AWS 针对分析场景做了向量化指令优化
  2. 内置数据湖引擎:以前查 S3 上的 Iceberg 表要走 Redshift Spectrum(另外计费),现在 RG 实例自己就能处理,不需要外部服务

创建 RG 集群

方式一:新建集群

aws redshift create-cluster \
  --cluster-identifier my-analytics-rg \
  --node-type rg.xlplus \
  --number-of-nodes 3 \
  --master-username admin \
  --master-user-password 'YourStr0ngP@ss!' \
  --db-name analytics \
  --iam-roles "arn:aws:iam::123456789012:role/RedshiftS3Access" \
  --encrypted \
  --kms-key-id arn:aws:kms:us-east-1:123456789012:key/xxxxx

节点类型选 rg.xlplus,这是 RG 家族的起步规格。

方式二:从 RA3 快照恢复到 RG

# 先对现有 RA3 集群打快照
aws redshift create-cluster-snapshot \
  --cluster-identifier my-old-ra3 \
  --snapshot-identifier ra3-to-rg-migration

# 从快照恢复为 RG 集群
aws redshift restore-from-cluster-snapshot \
  --cluster-identifier my-new-rg \
  --snapshot-identifier ra3-to-rg-migration \
  --node-type rg.xlplus \
  --number-of-nodes 3

从快照恢复是最稳的迁移路径。数据不用重新导入,Schema、用户权限全部保留。恢复时间取决于数据量,40TB 大约 2-3 小时。

数据湖查询:告别 Spectrum

以前查 S3 上的 Iceberg 表,SQL 长这样:

-- 旧方式:通过 Spectrum external schema
CREATE EXTERNAL SCHEMA lake_spectrum
FROM DATA CATALOG
DATABASE 'my_lake_db'
IAM_ROLE 'arn:aws:iam::123456789012:role/RedshiftSpectrumRole';

SELECT * FROM lake_spectrum.orders 
WHERE order_date > '2026-01-01';

RG 实例内置了矢量化数据湖引擎,Iceberg 表直接在集群节点处理:

-- RG 方式:直接查 Iceberg,无需 Spectrum
CREATE EXTERNAL SCHEMA lake_native
FROM DATA CATALOG
DATABASE 'my_lake_db'
IAM_ROLE 'arn:aws:iam::123456789012:role/RedshiftLakeRole'
CATALOG_TYPE ICEBERG;

-- 同样的查询,但数据在集群节点本地处理
SELECT 
    product_category,
    SUM(amount) as total_sales,
    COUNT(DISTINCT customer_id) as unique_customers
FROM lake_native.orders 
WHERE order_date BETWEEN '2026-01-01' AND '2026-03-31'
GROUP BY product_category
ORDER BY total_sales DESC;

区别在哪?RA3 + Spectrum 是把 S3 数据拉到 Spectrum 层处理(网络开销大),RG 是直接在集群节点本地的矢量化引擎跑(低延迟)。

跨仓库 + 数据湖联合查询

RG 实例真正爽的是一条 SQL 跨两个数据源:

-- 数据仓库表 JOIN 数据湖 Iceberg 表
SELECT 
    w.customer_name,
    w.tier,
    l.event_type,
    COUNT(*) as event_count
FROM warehouse_schema.customers w
JOIN lake_native.clickstream l 
    ON w.customer_id = l.user_id
WHERE l.event_date > CURRENT_DATE - INTERVAL '7 days'
GROUP BY 1, 2, 3
HAVING COUNT(*) > 100;

不需要 ETL 把数据湖的数据再导一份到仓库里。节省存储成本,数据也不会出现延迟不一致。

性能测试结果

我用团队实际的 15 条高频 SQL 做了 A/B 测试(相同数据集 40TB、相同节点数 3):

查询类型 RA3 (3节点) RG (3节点) 加速比
聚合报表(GROUP BY + HAVING) 45s 19s 2.4x
多表 JOIN(5张事实表) 2m 10s 55s 2.4x
数据湖 Iceberg 扫描 38s (Spectrum) 14s (内置) 2.7x
窗口函数排名 22s 10s 2.2x
INSERT INTO SELECT (ETL) 5m 30s 2m 20s 2.4x

Iceberg 查询提升最明显(2.7x),因为省掉了 Spectrum 的网络往返。

迁移注意事项

1. 检查 SQL 兼容性

RG 和 RA3 的 SQL 语法完全兼容,不需要改代码。但有两个边界 case:

-- 检查是否有用到即将废弃的函数
SELECT DISTINCT querytxt 
FROM stl_query 
WHERE querytxt ILIKE '%CONVERT_TIMEZONE%'
  AND starttime > CURRENT_DATE - 30;

2. JDBC/ODBC 驱动更新

<!-- Maven 依赖建议升级到最新 -->
<dependency>
    <groupId>com.amazon.redshift</groupId>
    <artifactId>redshift-jdbc42</artifactId>
    <version>2.1.0.31</version>
</dependency>

3. 监控迁移后性能

-- 查看查询执行计划确认走了矢量化引擎
EXPLAIN VERBOSE
SELECT * FROM lake_native.orders WHERE order_date > '2026-01-01';

-- 监控集群资源使用
SELECT 
    query, 
    elapsed/1000000.0 as seconds,
    aborted,
    label
FROM stl_query 
WHERE starttime > CURRENT_TIMESTAMP - INTERVAL '1 hour'
ORDER BY elapsed DESC
LIMIT 20;

成本对比

以 3 节点 ra3.xlplus → 3 节点 rg.xlplus 为例:

  • RA3 按需价格:约 $1.086/节点/小时
  • RG 按需价格:约 $0.76/节点/小时(估算,降 30%)
  • 月度节省:3 × $0.326 × 720h ≈ $704/月

加上 Spectrum 查询费用省掉(之前每月约 $200),总计月省约 $900。

什么场景适合迁移

  • ✅ 现有 RA3 集群,数据量 > 10TB
  • ✅ 频繁查询 S3 数据湖(Iceberg/Parquet)
  • ✅ 月度 Redshift 账单 > $3000,有降本需求
  • ✅ 查询延迟是瓶颈(Dashboard 加载慢)
  • ❌ 数据量 < 1TB,RA3 甚至 Serverless 就够了
  • ❌ 刚建好 RA3 集群还在 Reserved Instance 合约期内

小结

RG 实例对数据团队来说是个"白捡"的升级——性能翻倍、价格下降、还内置了数据湖引擎。迁移路径就是从快照恢复,改个节点类型的事。

如果你的 RA3 集群跑了超过一年,强烈建议跑个 benchmark 测试。大概率能省钱又提速。

产品页:https://aws.amazon.com/redshift/

posted @ 2026-05-22 11:35  亚马逊云开发者  阅读(2)  评论(0)    收藏  举报