TL;DR. Redshift pricing comes down to one question: how many hours a month your warehouse is busy. At US East list prices, Redshift Serverless and the new Graviton-based RG nodes cost almost exactly the same per GB of memory per hour ($0.0234 against $0.0238), and RA3 costs 43% to 45% more. So, matched on memory and on demand, Serverless wins at any utilization. Against a reserved RG cluster with the same memory, Serverless stays cheaper below 518 busy hours a month on a 1-year term and below 322 on a 3-year term. The default Serverless base capacity of 128 RPUs bills $48 per busy hour, and a connection pool's health checks can keep that meter running when nobody is querying.
Most Redshift pricing pages list node rates and stop. That does not tell you which deployment to pick, because the answer depends on a number the price list does not show: your busy hours. This post prices every line from AWS's price list, computes the break-even between Serverless and provisioned for one stated workload, and shows how to measure your own busy hours and split the bill by team.
Six meters make up a Redshift bill
All rates below are US East (N. Virginia) on-demand list prices from AWS's price list for Amazon Redshift (publication of September 11, 2026), read on October 29, 2026.
| Meter | How it is billed | US East list price |
|---|---|---|
| RG node-hours | per node-hour, provisioned | rg.large $0.3801, rg.xlarge $0.7602, rg.4xlarge $3.04267, rg.12xlarge $9.128 |
| RA3 node-hours | per node-hour, provisioned | ra3.large $0.543, ra3.xlplus $1.086, ra3.4xlarge $3.26, ra3.16xlarge $13.04 |
| Serverless RPU-hours | per second while queries run, 60-second minimum | $0.375 per RPU-hour |
| Managed storage | per GB-month used, both deployments | $0.024 |
| Spectrum (RA3) | per TB scanned in S3, 10 MB minimum per query | $5.00 per TB |
| Concurrency scaling | per node-second beyond free credits, provisioned only | rg.xlarge $0.00021, ra3.xlplus $0.0003 |
Snapshots beyond the free allocation add $0.023 per GB-month, priced in detail in AWS snapshot cost.
Three rules on AWS's Redshift pricing page change how to read this table:
- Serverless has no separate data lake charge. Its S3 queries "are not billed for separately and are included in the amount billed for Amazon Redshift Serverless in RPU-hr amounts".
- RG does not need Spectrum. AWS says "Spectrum is not required for Redshift RG instances since they include a built-in data lake query engine". AWS's node guide adds that "RA3 clusters use Amazon Redshift Spectrum for data lake queries", so the $5 per TB line is an RA3 cost.
- Concurrency scaling has a free allowance. "You can accumulate one hour of Concurrency Scaling cluster credits every 24 hours while your main cluster is running", up to 30 hours per cluster. Serverless has no separate concurrency scaling charge, because scaling is billed as RPUs.
RG nodes cost 30% less than RA3 for the same memory
AWS launched RG nodes on May 12, 2026 as Graviton-based provisioned nodes with "30% lower price per vCPU" than RA3. It added rg.large and rg.12xlarge on July 16, 2026.
We divided each node's hourly rate by its memory from AWS's node type table:
| Size pair | RG node | RA3 node | RG per GiB-hour | RA3 per GiB-hour |
|---|---|---|---|---|
| 2 vCPU, 16 GiB | rg.large $0.3801 | ra3.large $0.543 | $0.0238 | $0.0339 |
| 4 vCPU, 32 GiB | rg.xlarge $0.7602 | ra3.xlplus $1.086 | $0.0238 | $0.0339 |
| 128 GiB vs 96 GiB | rg.4xlarge $3.04267 | ra3.4xlarge $3.26 | $0.0238 | $0.0340 |
| 48 vCPU, 384 GiB | rg.12xlarge $9.128 | ra3.16xlarge $13.04 | $0.0238 | $0.0340 |
An rg.xlarge on demand costs exactly what an ra3.xlplus costs on a 1-year reservation. Both are $0.7602 an hour in the price list. A team holding RA3 reservations gets the same rate on RG without a commitment, and RG reservations then take another 30% (1 year) or 56.5% (3 years, no upfront) off. AWS lists "Snapshot & Restore, Elastic Resize, or Classic Resize" as the ways to move a cluster.
AWS also claims RG runs "up to 2.2x as fast as RA3 instances for data warehouse workloads". That is a vendor claim we did not measure, and the price argument above does not depend on it.
Serverless costs the same as RG per GB, so busy hours decide
One RPU provides 16 GB of memory. At $0.375 per RPU-hour that is $0.0234 per GB-hour, within 2% of RG's $0.0238. Matched on memory, an always-on Serverless warehouse and an on-demand RG cluster cost the same. Every hour Serverless sits idle is a saving; every reservation on RG moves the line.
Consider a team that needs 128 GiB of warehouse memory and stores 5 TB. Storage is $122.88 a month on every option (5,120 GB × $0.024), so the table compares compute only, at 730 hours a month:
| Option | Hourly rate | Monthly compute |
|---|---|---|
| 4 × ra3.xlplus, on demand | 4 × $1.086 | $3,171.12 |
| 4 × rg.xlarge, on demand | 4 × $0.7602 | $2,219.78 |
| 4 × rg.xlarge, 1-year reserved, no upfront | 4 × $0.53214 | $1,553.85 |
| 4 × rg.xlarge, 3-year reserved, no upfront | 4 × $0.33075 | $965.79 |
| Serverless, 8 RPU base, busy 730 hours | 8 × $0.375 | $2,190.00 |
| Serverless, 8 RPU base, busy 220 hours | 8 × $0.375 | $660.00 |
The break-even is each provisioned monthly cost divided by Serverless's $3.00 per busy hour:
- Against RG on demand: $2,219.78 / $3.00 = 740 hours, more than a month has. Serverless is never more expensive.
- Against a 1-year RG reservation: $1,553.85 / $3.00 = 518 busy hours, 71% of the month.
- Against a 3-year RG reservation: $965.79 / $3.00 = 322 busy hours, 44% of the month.
A BI workload busy 10 hours on 22 weekdays is 220 hours, well under both. Pausing the on-demand RG cluster for the other 510 hours would cost 4 × $0.7602 × 220 = $668.98, since a paused cluster means "you only pay for backup storage". So for a predictable schedule, a paused RG cluster and Serverless land within $9 of each other.
Reservations: RG commits per node, Serverless commits per RPU around the clock
Both commitments bill whether you use them or not, and both cover compute only. Storage stays at list price.
| Commitment | Term and payment | Discount on compute |
|---|---|---|
| RG or RA3 reserved nodes | 1 year, no upfront | 30% |
| RG or RA3 reserved nodes | 3 years, no upfront | 56.5% |
| Serverless reservation | 1 year, no upfront | up to 20% (price list: $0.293, 21.9%) |
| Serverless reservation | 1 year, all upfront | up to 24% |
The node discounts are computed from the price list. The Serverless percentages come from AWS's billing guide for serverless reservations: "up to 20 percent with the no-upfront option, or up to 24 percent when you pay all-upfront", while the price list's no-upfront reservation rate is $0.293 per RPU-hour, 21.9% below on-demand. AWS's pricing page now also lists a 3-year term "up to 45%", which the billing guide does not describe yet.
A Serverless reservation is billed "24 hours a day, seven days a week". Reserving 8 RPUs costs 8 × $0.293 × 730 = $1,711.12 a month, whatever the busy hours. That is $157.27 more than the 1-year RG reservation with the same memory, so a team busy enough to reserve is better off on RG. The guide adds two limits: "You can't change or delete a reservation", and usage above the reserved RPUs is billed at on-demand rates. The reservation does have one advantage: it is shared across every Serverless workgroup under the payer account.
Why the Redshift bill grows when nobody changes anything
- The default base capacity is 128 RPUs. That is $48 per busy hour, 16 times the 8 RPU rate in our example. AWS's capacity guide allows "4 RPUs, or in units of 8 at or above 8 RPUs". A larger base finishes some queries sooner, but a query only costs the same at 16 times the RPUs if it runs 16 times faster.
- Health checks are billable queries. AWS's Serverless billing guide says "Each health-check query triggers compute usage" and "maintaining open connection pools can generate costs even when no actual user workloads are running". A BI tool's pool that sends
SELECT 1around the clock can bill hours in which nobody opened a report. - Open transactions keep the meter on. "If you don't end or roll back an open transaction, Amazon Redshift Serverless continues to use RPUs", for up to six hours of inactivity before the session ends.
- Scaling up does not always scale back down. The same guide warns that "RPU capacity can remain at a higher setting for a period after query load falls". At 4 RPUs, once the warehouse grows past that, "Amazon Redshift won't scale your data warehouse back down to 4 RPUs".
- RA3 data lake scans bill per TB. Every Spectrum query is rounded up to the next megabyte, with a 10 MB minimum. On RG and Serverless, the same scan uses compute time instead.
Price Redshift per team with two system views
Serverless logs billed capacity by the minute in SYS_SERVERLESS_USAGE. AWS's instruction for its charged_seconds column: "Use charged_seconds to calculate cost for an Amazon Redshift Serverless workgroup". SYS_QUERY_HISTORY holds each query's username and execution_time. Split each hour's cost across users by their share of execution time:
WITH hourly_cost AS (
SELECT date_trunc('hour', start_time) AS hour,
SUM(charged_seconds) / 3600.0 * 0.375 AS cost -- your RPU price
FROM sys_serverless_usage
GROUP BY 1
),
hourly_user AS (
SELECT date_trunc('hour', start_time) AS hour,
trim(username) AS username,
SUM(execution_time) AS exec_us
FROM sys_query_history
GROUP BY 1, 2
),
hourly_total AS (
SELECT hour, SUM(exec_us) AS total_us FROM hourly_user GROUP BY 1
)
SELECT u.username,
SUM(c.cost * u.exec_us / NULLIF(t.total_us, 0)) AS allocated_cost
FROM hourly_user u
JOIN hourly_total t ON t.hour = u.hour
JOIN hourly_cost c ON c.hour = u.hour
GROUP BY 1
ORDER BY 2 DESC;
Three caveats make this an allocation, not a measurement:
- The usage view keeps 7 days. AWS says it "retains the information in SYS_SERVERLESS_USAGE for 7 days", and only superusers can read it. Copy it to a table daily.
- Execution time is a proxy. A query that scaled the warehouse up costs more per second than one that ran at base capacity. Splitting by time spreads that cost over everyone active in the hour.
- Unattributed hours are the finding. Hours with a cost and no matching user queries drop out of the join. Compare the sum of
allocated_costwith the sum ofhourly_cost: the gap is the meter running with no user query to charge it to.
On a provisioned cluster the node cost is fixed, so the same split answers a different question: who uses the capacity you pay for. SYS_QUERY_HISTORY's compute_type column separates queries that ran on concurrency scaling, which is the part billed by the second.
The case for staying provisioned
The strongest objection: memory is not performance. AWS defines an RPU by its memory alone, so 8 RPUs may run a workload slower than four rg.xlarge nodes, and Serverless will scale up and bill more RPU-hours to compensate. A steady pipeline running most of the day on a 3-year RG reservation pays $965.79 for capacity Serverless would bill at $2,190.
That holds for warehouses busy more than 44% of the time on a 3-year commitment, or 71% on a 1-year one. Most teams do not know which side of those lines they are on, because the console shows queries, not idle hours. Measure busy hours before you commit, and run the comparison again whenever the schedule changes. If the workload is steady, reserve RG. If it follows office hours, run Serverless at a small base or pause an on-demand RG cluster on a schedule.
The limits of this post: prices are US East list prices read on October 29, 2026; other Regions and negotiated discounts differ. The workload is hypothetical and matched on memory only. We did not benchmark RG against RA3 or Serverless, model concurrency scaling above the free credits, or price Redshift ML, zero-ETL or cross-Region transfer. For the same workload priced on Snowflake, BigQuery and Databricks SQL, see data warehouse cost.
Where Datapace fits
Choosing between these options takes busy hours per warehouse, cost per team and the idle hours nobody can attribute, and Redshift spreads them across system views that expire in a week. Datapace is building one map of your data estate with usage and cost attached, and agents that propose changes as pull requests your team reviews and merges. To see how the same lines add up on an AWS database bill, read RDS pricing: every line of the bill.
Sources
- AWS, Price List API offer file for Amazon Redshift, US East (N. Virginia), publication of September 11, 2026, read October 29, 2026 (RG, RA3 and DC2 node rates, reserved node rates, Serverless RPU and reservation rates, managed storage, Spectrum, concurrency scaling, snapshots).
- AWS, Amazon Redshift pricing (Spectrum rules, RG built-in data lake engine, Serverless data lake billing, concurrency scaling credits, Serverless reservation terms).
- AWS, Amazon Redshift RG instances powered by AWS Graviton, May 12, 2026, and rg.large and rg.12xlarge sizes, July 16, 2026.
- AWS, Amazon Redshift provisioned clusters (node type specifications, pause billing).
- AWS, Compute capacity for Amazon Redshift Serverless (RPU memory, base capacity default and steps, 4 RPU scaling).
- AWS, Billing for Amazon Redshift Serverless and Billing for serverless reservations.
- AWS, SYS_SERVERLESS_USAGE and SYS_QUERY_HISTORY.




