Amazon Athena

AWS Redshift vs Athena: Key Differences Explained

Athena queries files in S3 in place and bills per terabyte scanned, $5 per TB. Redshift holds loaded tables and bills per node-hour or per RPU-hour. At AWS's list rates the smallest provisioned Redshift node costs the same as about 79 TB scanned a month on Athena. Neither engine decides how Revenue is defined, which is why the choice of engine does not fix inconsistent reports.

Amazon Athena9 min read

AWS Redshift vs Athena: Key Differences Explained

The same dashboard scans 2 TB a day. On Athena that is $10 a day, $300 a month. If the table is stored as wide CSV files and the same dashboard ends up scanning 8 TB, it is $40 a day, $1,200 a month. On Redshift neither number is the question, because you pay for a node or for compute seconds, not for what a query touches.

So the useful comparison is not which engine is better. It is how each one bills, where the two bills cross, what makes each one fast, and what neither of them does for the people who read the report. Prices below are from AWS’s own pages (Athena, Redshift), checked in October 2026.

They sit in different places in the stack

They sit in different places in the stack

Athena runs SQL on files in S3, where they already are. Table definitions live in the AWS Glue Data Catalog, there is nothing to provision, and AWS says there are no extra storage charges for querying: you pay standard S3 rates for storage and for the stored query results, and standard Glue rates for the catalog.

Redshift keeps loaded tables in its own columnar storage. You run it as a provisioned cluster or as Redshift Serverless, and the data is copied into Redshift managed storage first. Redshift Spectrum can also query files in S3 in place, billed by the bytes scanned, so the line between the two is not a wall.

Diagram of Amazon Athena querying files in S3 in place and Amazon Redshift holding loaded tables, with one layer of Data Marts and a shared data model above both engines

How each one bills

How each one bills

The rates are from the AWS pages above. The rows are not the same unit, which is the point.

Athena Redshift provisioned Redshift Serverless
You pay for Data scanned Node-hours, on demand RPU-hours, per second, 60-second minimum
List rate $5 per TB scanned From $0.543 an hour From $1.50 an hour
When nothing runs No compute charge Billed while the cluster runs; pausing stops it No compute charge while idle
Storage Standard S3 rates Managed storage per GB Managed storage per GB

Two details change the picture. A paused provisioned cluster bills only for backup storage, so idle capacity is a choice you can undo. And Redshift Serverless bills for compute while it is active and nothing while it is idle, which means the picture of Redshift as always-on capacity is only true of provisioned clusters.

On a provisioned cluster the hourly rate does not move with the number of queries. AWS also offers Concurrency Scaling, which provisions extra compute for dynamic workloads, with up to one hour of free credits a day and a per-second rate beyond that.

The Turning Point

OWOX Data Marts

See your first report built in real time. 15 minutes.

  1. Connect your data warehouse
  2. Pick your metrics
  3. Get a live Google Sheets report

In the time it takes to write a ticket. Then imagine never writing that ticket again.

Book a Demo

We'll use your actual use case

Where the two bills cross

Where the two bills cross

Take the smallest provisioned node, $0.543 an hour, running every hour of a 730-hour month: $396. At $5 per TB that is the price of about 79 TB scanned on Athena, or 2.6 TB a day. Below that, Athena’s scan charge is smaller; above it, the node is.

Line chart of the monthly Athena scan charge at $5 per TB against a flat $396 a month for the smallest provisioned Redshift node, crossing at about 2.6 TB scanned a day, with 2 TB a day at $300 and 8 TB a day at $1,200

Read the chart for what it is: a comparison of prices, not of capability. It says nothing about whether one small node can serve your concurrency, and it leaves out S3 and Glue. Redshift Serverless has no single TB equivalent, because it bills compute seconds: the way to price it is to run your own workload for a week and read the RPU-hours.

Two habits move the Athena line more than the choice of engine does. A rerun of the same query scans the same data again, unless the query opts into Athena’s result reuse, which serves a stored result up to a maximum age you set, at the cost of returning a stale result until that age runs out. And the format of the data sets the bill: in AWS’s pricing example, a 3 TB uncompressed text table costs $15 to query one column, and the same data compressed as Parquet costs $1.25.

How refresh rate multiplies the bill

How refresh rate multiplies the bill

Dataset size is only half of an Athena bill. The other half is how often something asks. Say a dashboard query scans 100 GB, which is 0.0977 TB and $0.488 at $5 per TB:

Refresh Runs a day Scan charge a day A month
Daily 1 $0.49 $15
Hourly 24 $11.72 $352
Every 5 minutes 288 $140.63 $4,219

The data did not grow between rows. A dashboard that refreshes every few minutes turns a $15 month into a $4,000 one, and nobody changed a query. On a provisioned Redshift cluster the same refreshes land inside capacity you already pay for, which is the case for it at high frequency. On Serverless they add RPU-seconds, so the cost moves with how long each refresh runs, not with how many TB it reads.

Putting a ceiling on the bill

Putting a ceiling on the bill

Each engine has a way to cap spend, and the AWS pages name them.

On Athena, workgroups let you separate teams and workloads and set limits on the data each query or the whole workgroup can process, and track costs per workgroup. A runaway exploratory query then hits a limit instead of an invoice. Result reuse, mentioned above, is the other lever.

On Redshift provisioned, the levers are time and commitment: pause a cluster that is not in use, resize it on a schedule with the Resize Scheduler, or buy reserved nodes for steady workloads. On Redshift Serverless you set a base capacity between 4 and 1,024 RPUs, and you can set usage limits in RPU-hours per day, week or month, with an action Redshift takes when a limit is reached. AWS also sells Serverless Reservations, which it says lower compute cost by up to 24 percent for a one-year term and up to 45 percent for three years.

None of these makes the choice for you. They change the question from how big the bill could get to who notices first when it does.

What makes each one fast

What makes each one fast

Both engines are fast when they read little, and the AWS guides say how each one gets there.

On Athena the lever is layout. Partitioning keeps related data together by date, country or region, so a query filtered to the last week reads only the last week. The same guide advises against over-partitioning: too many partition keys give you many small files, and it suggests keeping records sorted by timestamp rather than partitioning by hour for the rare query that filters by hour. Partition keys should be of type STRING for the filter to be pushed down to Glue, and empty or old partitions should be removed, because Athena lists every partition a query matches.

On Redshift the levers are the sort key and the distribution style. The sort key is stored with minimum and maximum values for each 1 MB block, so a range filter skips the blocks that cannot match. AWS’s example is five years of data sorted by date and a one-month query: up to 98 percent of the blocks are skipped. AWS recommends SORTKEY AUTO and lets Redshift choose. Distribution decides which node holds which rows: KEY keeps matching join values together, ALL copies a whole table to every node and suits only slow-moving tables, EVEN suits tables that do not join, and AUTO, the default, picks and changes the style as a table grows.

The difference worth noticing is what the lever buys. On Athena, anything that makes a query read less also makes it cheaper. On a provisioned cluster, a better sort key buys headroom: the query finishes sooner, but the hourly rate is the same.

A one-week test is cheaper than the argument

A one-week test is cheaper than the argument

A price page cannot tell you your scan volume or your RPU-hours. A week of your own queries can, and the free options make the test cheap.

For Athena, run the real dashboard queries and add up the bytes each one scans, then price the total at $5 per TB. Do it twice: once on the data as it is, and once after converting the heaviest table to Parquet, partitioned on the column you filter by. The gap between those two numbers is the first thing to bring to the decision, because it is the part of the bill you control without changing engine.

For Redshift Serverless, AWS offers a $300 credit with a 90-day expiry to accounts that have never used it, and says how fast the credit is used depends on the actual usage and the compute capacity of your endpoint. Load the same table, point the same dashboard at it for a week, and read the RPU-hours.

For provisioned Redshift the sizing question is nodes. AWS advises sizing a cluster on the amount of data you process daily, and in regions where Serverless is not yet available it offers a free trial for provisioned clusters: two months, or 750 hours a month, whichever you hit first.

In all three cases you are measuring the same thing: how much work your queries need, in the unit the engine bills in.

Which one fits which workload

Which one fits which workload

This is a judgement from the numbers above, not a statement from AWS.

Ask this If the answer is Lean toward
How often do the same queries run? Rarely, or in bursts Athena, because an idle week costs no compute
Hundreds of times a day, on the same tables Redshift, because the repeat runs are inside the node or the RPU-hours you already pay for
How much does one scan read? Little, once the data is partitioned and columnar Athena
Terabytes, repeatedly Redshift, or an aggregated table that Athena reads
Does the data have to stay in S3 as files? Yes Athena, or Redshift Spectrum
Do many people use the same tables at the same time? Yes Redshift, where you size and watch the capacity

Nothing forces one answer. Athena and Redshift can read the same files, and Spectrum extends Redshift to S3. AWS Athena 101 covers how Athena bills and what else it charges for, and the warehouse selection guide sets the engines beside Google BigQuery, Snowflake and Databricks.

What neither engine gives you

What neither engine gives you

Both engines return rows. Neither one decides what Revenue means, so two analysts can write two revenue queries against the same tables and both will run. That is true of Athena and of Redshift, and a faster engine does not change it.

The fix is to keep the definition in one place. OWOX Data Marts runs on both: AWS Athena and AWS Redshift are among the five supported storages, and a Data Mart is the SQL query, table or view an analyst publishes under a business name, with a description, an owner and the relationships to other Data Marts. Reports read that definition instead of copies of the query, and the data model is the set of Data Marts in one storage. A Data Mart belongs to one storage, and joined Data Marts must sit on the same one, so the definition goes with the engine it was written for.

OWOX Data Marts does not transform data: the SQL is the analyst’s. What it adds is a published name, an owner and a place for the description to live, which is the part neither engine has. If the warehouse choice is settled, Data Mart management is the next thing to read.

Your New Normal

Turn your data into decisions.

Governed data marts give you the clean foundation ML needs to actually work.

  • No AI hallucinations
  • Analyst-governed definitions
  • Every number traces to SQL
Get started free

FAQ

Frequently Asked Questions

Does rerunning the same query on Athena scan the data again?

Yes, unless the query opts into Athena's result reuse. With reuse on, Athena returns the stored result of an earlier matching run as long as it is not older than the maximum age you set, which reduces the bytes scanned. The catch, which AWS states, is that Athena does not check for changes in the source data until that age has been reached, so a reused result can be stale.

What makes queries fast on Athena and on Redshift?

Both are fast when they read little. On Athena that means partitioning on the columns you filter by, a columnar format such as Parquet, and not over-partitioning, which creates many small files. On Redshift it means a sort key, because each 1 MB block stores its minimum and maximum values and a range filter can skip the blocks that cannot match (AWS's example skips up to 98 percent), and a distribution style that keeps the rows you join together on the same node. AWS recommends SORTKEY AUTO and the default AUTO distribution.

How do I cap the bill on Athena and on Redshift?

On Athena, use workgroups to set limits on the data each query or the whole workgroup can process, and track costs per workgroup. On provisioned Redshift, pause clusters that are idle, resize them on a schedule with the Resize Scheduler, or buy reserved nodes for steady workloads. On Redshift Serverless, set the base capacity between 4 and 1,024 RPUs and set usage limits in RPU-hours per day, week or month, with an action Redshift takes when a limit is reached.

Is Athena cheaper than Redshift?

It depends on how much you scan and how often. Athena bills $5 per TB scanned. The smallest provisioned Redshift node costs $0.543 an hour, about $396 for a 730-hour month, which is the price of roughly 79 TB scanned on Athena. On those list prices Athena's scan charge is lower below about 2.6 TB a day and the node is lower above it. Redshift Serverless bills compute seconds, so it has no TB equivalent: run your own workload for a week and read the RPU-hours.

Does Redshift cost money when no queries are running?

A provisioned cluster bills while it runs, but pausing it suspends on-demand billing, and a paused cluster is charged only for backup storage. Redshift Serverless bills per second for the RPU-hours it uses, with a 60-second minimum, and charges nothing for compute while it is idle. Storage is billed separately in both cases.

Topics