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.

MeterHow it is billedUS East list price
RG node-hoursper node-hour, provisionedrg.large $0.3801, rg.xlarge $0.7602, rg.4xlarge $3.04267, rg.12xlarge $9.128
RA3 node-hoursper node-hour, provisionedra3.large $0.543, ra3.xlplus $1.086, ra3.4xlarge $3.26, ra3.16xlarge $13.04
Serverless RPU-hoursper second while queries run, 60-second minimum$0.375 per RPU-hour
Managed storageper GB-month used, both deployments$0.024
Spectrum (RA3)per TB scanned in S3, 10 MB minimum per query$5.00 per TB
Concurrency scalingper node-second beyond free credits, provisioned onlyrg.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:

  1. 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".
  2. 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.
  3. 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 pairRG nodeRA3 nodeRG per GiB-hourRA3 per GiB-hour
2 vCPU, 16 GiBrg.large $0.3801ra3.large $0.543$0.0238$0.0339
4 vCPU, 32 GiBrg.xlarge $0.7602ra3.xlplus $1.086$0.0238$0.0339
128 GiB vs 96 GiBrg.4xlarge $3.04267ra3.4xlarge $3.26$0.0238$0.0340
48 vCPU, 384 GiBrg.12xlarge $9.128ra3.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:

OptionHourly rateMonthly compute
4 × ra3.xlplus, on demand4 × $1.086$3,171.12
4 × rg.xlarge, on demand4 × $0.7602$2,219.78
4 × rg.xlarge, 1-year reserved, no upfront4 × $0.53214$1,553.85
4 × rg.xlarge, 3-year reserved, no upfront4 × $0.33075$965.79
Serverless, 8 RPU base, busy 730 hours8 × $0.375$2,190.00
Serverless, 8 RPU base, busy 220 hours8 × $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.

Line chart of monthly Redshift compute cost against busy hours per month, US East list prices, for 128 GiB of memory. Serverless at an 8 RPU base rises from $0 to $2,190 at 730 hours. Flat lines show 4 rg.xlarge nodes at $2,219.78 on demand, $1,553.85 on a 1-year reservation and $965.79 on a 3-year reservation, and 4 ra3.xlplus nodes at $3,171.12. Serverless crosses the 3-year line at 322 hours and the 1-year line at 518 hours. A 220-hour business schedule costs $660 on Serverless.

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.

CommitmentTerm and paymentDiscount on compute
RG or RA3 reserved nodes1 year, no upfront30%
RG or RA3 reserved nodes3 years, no upfront56.5%
Serverless reservation1 year, no upfrontup to 20% (price list: $0.293, 21.9%)
Serverless reservation1 year, all upfrontup 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

  1. 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.
  2. 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 1 around the clock can bill hours in which nobody opened a report.
  3. 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.
  4. 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".
  5. 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:

  1. 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.
  2. 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.
  3. Unattributed hours are the finding. Hours with a cost and no matching user queries drop out of the join. Compare the sum of allocated_cost with the sum of hourly_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

  1. 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).
  2. AWS, Amazon Redshift pricing (Spectrum rules, RG built-in data lake engine, Serverless data lake billing, concurrency scaling credits, Serverless reservation terms).
  3. AWS, Amazon Redshift RG instances powered by AWS Graviton, May 12, 2026, and rg.large and rg.12xlarge sizes, July 16, 2026.
  4. AWS, Amazon Redshift provisioned clusters (node type specifications, pause billing).
  5. AWS, Compute capacity for Amazon Redshift Serverless (RPU memory, base capacity default and steps, 4 RPU scaling).
  6. AWS, Billing for Amazon Redshift Serverless and Billing for serverless reservations.
  7. AWS, SYS_SERVERLESS_USAGE and SYS_QUERY_HISTORY.