Amazon Web Services · Redshift consulting, optimisation, migration and 24×7 support
Redshift Consulting, Optimisation and 24×7 Support
Redshift consulting from MinervaDB is warehouse engineering measured from the system tables, not a slide deck. We decide with you whether the estate belongs on RA3, the Graviton-based RG nodes or Serverless, fix the distribution and sort keys that make queries slow and clusters oversized, draw the managed-storage-to-S3 line on purpose, and then run the warehouse around the clock with named engineers. We are vendor-neutral: many Redshift consulting engagements end with a leaner Redshift, some end with a move to BigQuery, Snowflake, Databricks or ClickHouse, and we say which before you spend.
01 · The engine
What Redshift is in 2026, and why older estates need Redshift consulting
Redshift is still a leader-node-plus-compute-nodes MPP database with a PostgreSQL 8.0 ancestry in its SQL surface, but almost everything around that core has changed since 2021. Storage left the node. The lake engine moved into the cluster. Ingestion stopped needing pipelines. A warehouse designed on the old assumptions pays for all three changes without benefiting from any of them, and closing that gap is where Redshift consulting earns its fee.
Three deployment forms exist today. Provisioned clusters on RA3 nodes keep hot blocks on local SSD and hold the full dataset in Redshift Managed Storage on S3, up to 128 TB per node on ra3.4xlarge and ra3.16xlarge. Provisioned clusters on RG nodes, generally available since May 2026, run on AWS Graviton with an integrated data lake query engine that reads Iceberg and Parquet directly, so the Spectrum fleet and its US $5 per terabyte charge disappear.
AWS quotes 30% lower cost per vCPU than RA3 and up to 2.4× faster Iceberg queries at 10 TB scale. Redshift Serverless bills in Redshift Processing Units from a base of 4 to 1,024 RPU, and since April 2026 new workgroups default to AI-driven scaling that adds capacity before queries queue rather than after.
DC2 nodes with local NVMe remain the right answer only for datasets under about 1 TB compressed. DS2 dense-storage nodes are no longer available. Python UDFs reached end of support on 30 June 2026 and patch 203 began enforcing it, so any estate still carrying them has reports that are already broken or about to be.
The release cadence matters for operations. Redshift ships numbered patches to a current and a trailing maintenance track; patch 205 (cluster version 1.0.434008, 16 September 2026) added Iceberg materialized views with incremental refresh, automatic bloat removal with superblock shrinking, post-quantum hybrid TLS key exchange and gzip and bzip2 reads for Spectrum. Patch 204 brought Iceberg v3 tables with deletion vectors, a persistent query_uuid in the system tables, account lockout after repeated failed sign-ins and single-node rg.large clusters.
Patch 203 made tables with a primary key eligible for automatic DISTKEY assignment. Each of those changes a tuning decision we would have made differently a year ago.
That is the frame for every Redshift consulting engagement we take: AWS owns the platform, the warehouse design is yours, and a bigger node is not a substitute for either. Node families and dates above follow the Amazon Redshift cluster documentation and the cluster version history, which we re-verify at the start of every engagement.
Figure 1. The three deployment forms Redshift consulting has to choose between, and how each reaches the S3 lake: RA3 through the Spectrum fleet, RG through the integrated data lake engine, Serverless with lake access included. Data sharing joins a provisioned producer to Serverless consumers without copying data.
02 · Services
Redshift consulting services
Eight fixed-scope Redshift consulting services, each anchored to a named system table or metric. Most engagements start with the health check and continue as the findings dictate; the support retainer keeps the same engineers on the estate afterwards.
Health check and cost review
The starting point of most Redshift consulting engagements. Node type and count against measured CPU, memory, disk and queue time; managed storage growth; table design from SVV_TABLE_INFO; vacuum and analyze state; WLM configuration; concurrency scaling and Spectrum usage; 90 days of SYS_QUERY_HISTORY; reserved-node or Serverless spend against utilisation. The output is a findings report ranked by cost and latency effect, each item with its measurement and its estimated saving, labelled as an estimate until measured.
Table design and query performance
Distribution style and key, sort key type (compound, interleaved, multidimensional or AUTO), column encodings and widths, deep-copy redesigns with transactional name swaps, VACUUM and ANALYZE scheduling, and query-level work from EXPLAIN and SYS_QUERY_DETAIL. Every change is verified against the same query history afterwards.
Workload management and concurrency
Automatic WLM with priorities and assignment rules, manual WLM where a queue needs a hard memory reservation, query monitoring rules that stop runaway queries, concurrency scaling policy, and Serverless base capacity, price-performance targets and RPU-hour usage limits.
RA3, RG or Serverless
A priced model of your own query history against each deployment form, the migration path (DC2 to RA3, RA3 to RG, provisioned to Serverless, or a producer-consumer split with data sharing), its rehearsal on a restored snapshot and its rollback.
Data lake, Iceberg and S3 Tables
Which data belongs in managed storage and which in S3 as Parquet or Iceberg, read through Spectrum on RA3 or the integrated engine on RG; partitioning and file-size guidance; Glue Data Catalog structure; Lake Formation permissions; Iceberg materialized views; long-term system table retention into S3 Tables.
Ingestion and zero-ETL
COPY from S3 with manifests and error handling, streaming ingestion from Kinesis Data Streams, Amazon MSK and Confluent Cloud, zero-ETL integrations from Aurora, RDS, DynamoDB and SaaS sources, change data capture through AWS DMS, and orchestration with dbt, Airflow or Step Functions. Designed for idempotent reloads and per-window reconciliation.
Migrations into and out of Redshift
Into Redshift from Teradata, Oracle, SQL Server, Netezza, Greenplum and on-premises PostgreSQL with the AWS Schema Conversion Tool and DMS where they help and hand-built pipelines where they do not. Out of Redshift to BigQuery, Snowflake, Databricks or ClickHouse when the assessment says so, with SQL translation, dual running, reconciliation and a rehearsed cutover.
Security and compliance
IAM and identity-provider federation, IAM Identity Center trusted identity propagation, role-based access control with row-level and column-level security, dynamic data masking, KMS encryption, audit logging to S3 and CloudTrail, enhanced VPC routing, and the evidence packs for SOC 2, HIPAA, PCI DSS and GDPR reviews.
03 · Table design
Where the time goes: distribution, sort keys and the plan
Most slow Redshift queries are not slow because the cluster is small. They are slow because two large tables are distributed on different columns and one of them crosses the network on every execution, or because a fact table has no usable sort key and every dashboard scans the whole thing. Redshift consulting that starts anywhere else is guessing.
Distribution decides join cost
Rows live on slices. A join between two tables distributed on the join column completes on each slice with no network step; the plan shows DS_DIST_NONE. If the inner table is small the planner broadcasts it to every slice (DS_BCAST_INNER), which is cheap until statistics go stale and the "small" table is 400 million rows. If neither table is on the join key the planner re-hashes both across the network (DS_DIST_BOTH), and that is the shape of almost every "this query takes eleven minutes" ticket we receive.
The fix is usually a DISTKEY on the join column for the largest fact tables and DISTSTYLE ALL for dimensions under a few million rows, with AUTO left in charge of the long tail. Since patch 203 Redshift will assign a DISTKEY automatically to tables with a primary key; we verify that it chose the column your queries actually join on, because a primary key and a join key are not always the same thing. Skew is checked in SVV_TABLE_INFO.skew_rows before and after.
Sort keys decide scan cost
A compound sort key on the columns dashboards filter by lets zone maps skip most blocks. Interleaved keys were the answer for many equally-likely filter columns and are now largely superseded by the multidimensional data layout sort key introduced in patch 202, which is worth testing on wide fact tables with unpredictable predicates. SVV_TABLE_INFO.unsorted above 20% on a table that is queried daily means vacuum is not keeping up with the load pattern and the load pattern, not the vacuum schedule, is what we change.
Reading the plan the way the engine does
Every Redshift consulting report we write starts from this pair of queries, run against the last seven days before anyone touches a parameter.
-- Five worst queries by execution time, last 7 days.
-- Queue time kept separate: a WLM problem is not a SQL problem.
SELECT query_id,
user_id,
ROUND(elapsed_time / 1e6, 1) AS elapsed_s,
ROUND(queue_time / 1e6, 1) AS queue_s,
ROUND(execution_time / 1e6, 1) AS exec_s,
returned_rows,
LEFT(query_text, 80) AS query_text
FROM sys_query_history
WHERE start_time > DATEADD(day, -7, GETDATE())
AND status = 'success'
ORDER BY execution_time DESC
LIMIT 5;
-- Step-level detail for one query: which step redistributed or spilled
SELECT step_id, step_name,
SUM(input_rows) AS input_rows,
SUM(output_rows) AS output_rows,
SUM(spilled_block_local_disk + spilled_block_remote_disk) AS spilled_blocks,
MAX(duration) / 1e6 AS max_slice_s
FROM sys_query_detail
WHERE query_id = ${QUERY_ID}
GROUP BY step_id, step_name
ORDER BY step_id; Two things fall out of that pair almost every time. A step whose slowest slice takes five times the median is skew, not volume. A join step with spilled blocks on a cluster that "has plenty of memory" is a WLM slot with too little memory for the queue it sits in. Neither is fixed by adding nodes.
Figure 2. The three join shapes the planner can produce and where each is read. The right-hand case is the one Redshift consulting work most often removes, and it is a table design change, not a cluster change.
Column encodings are the quiet third lever in Redshift consulting work. AZ64 on numeric and date columns and LZO or ZSTD on text usually beat what COPY chose years ago, and a VARCHAR(65535) column that holds ten-character codes inflates every hash join's memory grant. We rebuild such tables by deep copy into a correctly encoded twin, validate counts and checksums, and swap names inside a transaction so the change reverses in seconds.
04 · Workload management
Redshift consulting for workload management and concurrency
Dashboards timing out behind the nightly load is the classic Redshift complaint, and the classic wrong answer is a bigger cluster that sits idle 20 hours a day. The queue design is where the money is.
On provisioned clusters our Redshift consulting default is automatic WLM, in nearly every case. Queues are assigned by user group, query group or role, each with a priority from lowest to critical, and the engine sizes slots and memory from observed demand. The ELT queue gets high priority inside the load window and nothing outside it; BI gets normal; ad hoc analysts get low with a query monitoring rule that aborts anything past fifteen minutes or past a scan-row threshold. Manual WLM survives only where a queue needs a hard memory reservation, and we document why.
Query monitoring rules are the safety net. Predicates on query_execution_time, query_cpu_time, scan_row_count, nested_loop_join_row_count and spectrum_scan_size_mb with log, hop or abort actions stop one runaway join from taking the cluster down at 09:05 on a Monday. STL_WLM_RULE_ACTION tells you how often they fire, which is itself a finding.
Concurrency scaling is priced per second after the free hour a day (banked up to 30 hours), so we treat it as a burst tool for read queries and a small set of writes, never as a substitute for fixing the dashboards that trigger it. Queue time above 10% of execution time on the BI queue is a design problem; we say so in the report rather than recommending credits.
On Serverless the levers are different. Base capacity sets the floor, the price-performance target tells AI-driven scaling whether to favour cost or speed, and usage limits cap RPU-hours per day, week or month with alert or disable actions. Without a usage limit a new workgroup will happily scale a badly written dashboard to 512 RPU and bill for it; with one, the same dashboard gets a ticket instead of an invoice. SYS_SERVERLESS_USAGE shows compute seconds against charged seconds per interval, which is where the modelling starts.
Where an estate has both, the pattern that keeps winning in our Redshift consulting work is a provisioned producer for loads and one or more Serverless consumers for BI, joined by a data share. The load window never queues behind analysts, analysts never queue behind the load, and the Serverless side is billed only while someone is actually running a query.
Figure 3. The two halves of Redshift consulting for workload management: provisioned WLM on the left, Serverless capacity control on the right, and the system views each is read from.
05 · Deployment
RA3, RG or Serverless: what Redshift consulting recommends and why
The right form depends on the shape of the load, not on the size of the data. Steady ELT with a large footprint favours a reserved provisioned cluster; bursty or intermittent work favours Serverless; mixed estates split the two. We model your own query history against each price list before we say which; that model is where Redshift consulting on deployment starts.
| Node | vCPU | Memory | Managed storage per node | Nodes | Lake access | When we recommend it |
|---|---|---|---|---|---|---|
| ra3.large | 2 | 16 GiB | 8 TB (1 TB single-node) | 1–16 | Spectrum, US $5/TB | Small provisioned estates that need data sharing or Multi-AZ |
| ra3.xlplus | 4 | 32 GiB | 32 TB | 2–32 | Spectrum | Mid-size warehouses with modest concurrency |
| ra3.4xlarge | 12 | 96 GiB | 128 TB | 2–64 | Spectrum | The workhorse; reserved pricing for steady ELT |
| ra3.16xlarge | 48 | 384 GiB | 128 TB | 2–128 | Spectrum | Large, high-concurrency estates |
| rg.large | 2 | 16 GiB | 8 TB (1 TB single-node) | 1–16 | Integrated engine, no per-TB charge | Replaces ra3.large one-for-one; single node since patch 204 |
| rg.xlarge | 4 | 32 GiB | 32 TB | 2–32 | Integrated engine | Replaces ra3.xlplus one-for-one |
| rg.4xlarge | 16 | 128 GiB | 128 TB | 2–64 | Integrated engine | Three RG nodes per four ra3.4xlarge; the usual RG target |
| rg.12xlarge | 48 | 384 GiB | 128 TB | 2–128 | Integrated engine | Replaces ra3.16xlarge one-for-one |
| Serverless | 4–1,024 RPU base | Namespace on RMS | n/a | Included | Bursty BI, dev and test, data-share consumers; US $0.375 per RPU-hour in us-east-1 | |
Specifications from the Amazon Redshift node type documentation and pricing page as of September 2026. Prices vary by region and change; we re-price every model on the day the report is written.
Moving from RA3 to RG
For most clusters the move is an elastic resize that keeps the endpoint and takes roughly 10 to 15 minutes, during which the cluster is read-only, zero-ETL tables go into resync and data shares pause for a few minutes. Classic resize handles node configurations elastic resize cannot and rebalances slices evenly, at the cost of a longer window and a fresh manual snapshot no older than ten hours.
Snapshot-and-restore builds an RG twin beside the RA3 cluster for validation with no production downtime, at the cost of a new endpoint and re-created zero-ETL integrations. We rehearse the chosen path on a restored snapshot, measure the top fifty queries on both, and only then book the window. Reverting to RA3 works by the same mechanisms, which is what makes the change acceptable to a Redshift consulting practice that treats every cluster as production.
How the cost model is built
We take 90 days of SYS_QUERY_HISTORY, bucket execution seconds and scanned bytes by hour, and replay the profile against on-demand and reserved RA3 and RG pricing and against Serverless RPU-hours at the observed concurrency. Spectrum scan bytes from SVL_S3QUERY_SUMMARY and SYS_EXTERNAL_QUERY_DETAIL are priced separately for RA3 and zeroed for RG. Managed storage is priced from SVV_TABLE_INFO.size growth, and concurrency scaling seconds from SVCS_CONCURRENCY_SCALING_USAGE. The output is three monthly numbers per candidate with the assumptions written next to them. AWS's own migration guidance is at RA3 to RG migration best practices; our Redshift consulting model is what tells you whether it applies to you.
06 · Ingestion and the lake
Ingestion, zero-ETL, data sharing and the S3 boundary
Half of Redshift performance problems begin upstream: unsorted loads, delete-heavy CDC churn the vacuum cannot absorb, or Spectrum scans of data that should have been a managed table. The ingestion design and the lake boundary are part of every Redshift consulting scope for that reason.
Four ways in
Zero-ETL replicates change data from Aurora MySQL and PostgreSQL, RDS for MySQL, PostgreSQL and Oracle, Oracle Database@AWS, DynamoDB, self-managed MySQL, PostgreSQL, SQL Server and Oracle, and SaaS sources including Salesforce, SAP, ServiceNow and Zendesk into managed storage within seconds and with no pipeline code.
The target must be an RA3, RG or Serverless warehouse; the source list and its regional caveats are in the zero-ETL documentation. Streaming ingestion exposes Kinesis Data Streams, Amazon MSK and Confluent Cloud topics as materialized views, and since patch 203 Kinesis refreshes can run on concurrency scaling clusters. COPY from S3 remains the batch workhorse, parallel per slice, with manifests, MAXERROR and STL_LOAD_ERRORS. AWS DMS covers the engines and networks zero-ETL does not reach.
Whichever path, our Redshift consulting design rule is idempotent reloads and reconcile row counts and checksums per load window from SYS_LOAD_HISTORY and SYS_LOAD_ERROR_DETAIL, because reloads happen and a warehouse that cannot be reloaded safely is not one you can operate.
Sharing instead of copying
Data sharing lets a consumer warehouse read a producer's live tables with no copy and no pipeline, across accounts and regions, governed through Lake Formation where the estate needs central control. Multi-warehouse writes through data sharing have been generally available since November 2024, so an ELT workgroup can write into a namespace it does not own. The producer-consumer split described under workload management is built on exactly this.
The S3 boundary
Hot, frequently joined data belongs in managed storage. Cold partitions, raw landing data and anything other engines need to read belong in S3 as Parquet or Iceberg, registered in the Glue Data Catalog. Iceberg v3 tables with deletion vectors are readable since patch 204, Iceberg materialized views with incremental refresh since patch 205, and since August 2026 system table history can be retained beyond the seven-day window in Amazon S3 Tables, which is the first time long-term query-history analysis has not needed a custom export job.
We set partitioning and target file sizes on the lake side so that a scan reads the partitions it needs and no more, and we review SYS_EXTERNAL_QUERY_DETAIL monthly to catch the lake tables that have quietly become hot.
Figure 4. The ingestion topology a Redshift consulting scope covers: sources, the four ingestion paths, the producer-consumer split, and the lake tier. Reconciliation sits under all of it.
08 · Method
How a Redshift consulting engagement runs
Read-only first, changes with rollback second, measurement forever. The structure is the same whether the estate is two ra3.large nodes or a 96-node cluster with forty data shares.
Week one: evidence
A Redshift consulting engagement begins with a cross-account role with read-only cluster permissions and a database user with unrestricted system-log access. We collect the evidence set above, 90 days of query history and the billing data, and deliver the findings report ranked by cost and latency impact, each item with its measurement and its estimated effect.
Weeks two to four: changes with rollback
Table redesigns run as deep copies validated by count and checksum, then swapped by name inside a transaction. WLM and QMR changes are staged with a monitoring window. Node, track or Serverless moves are rehearsed on a restored snapshot and booked into a window with the resync and data-share pauses written into the change record.
Ongoing: measurement and support
The same query-history and spend analysis runs monthly under the support retainer, so a regression is caught when a new dashboard or pipeline lands rather than when the invoice does. Patch notes on both maintenance tracks are read before they reach your cluster.
Figure 5. The three phases of a Redshift consulting engagement and the standing rule under them.
Redshift is rarely alone. The sources are usually RDS or Aurora PostgreSQL and MySQL, the lake is S3 with Glue, the streaming path is Kinesis or Kafka, and there is often a second warehouse or a ClickHouse cluster serving the customer-facing analytics. Our AWS data platform engineering team covers all of these and our data engineering practice builds the pipelines between them, so a finding that originates upstream is fixed upstream by the same Redshift consulting engagement.
09 · Operations
24×7 Redshift support with named engineers
Most Redshift consulting engagements continue into the retainer, which gives you named engineers on a 24×7 rota, not a ticket queue. Redshift support sits inside our AWS data platform practice and our data analytics and data warehousing support for organisations running more than one warehouse.
What is covered
- Failed and slow loads, hung queries, disk-full and queue incidents, and cost spikes, with the fix and the evidence in the ticket
- Maintenance-window and patch-track problems, including behaviour changes announced ahead of a patch and their effect on your SQL
- Zero-ETL integrations in error or resync state, streaming views that stop refreshing, data shares that stop resolving
- Monthly review of query history, table health, storage growth and spend against the previous month, with the drift explained
- Quarterly restore drill from a cross-region snapshot copy, timed, so the RTO on paper is one you have actually achieved
Severity targets
| Severity | Definition | Acknowledged |
|---|---|---|
| S1 | Warehouse down, loads failing estate-wide, data loss risk | 15 minutes, 24×7 |
| S2 | Major degradation, critical reports or loads failing | 12 hours |
| S3 | Single workload impaired, workaround exists | 24 hours |
| S4 | Questions, tuning requests, planned changes | 48 hours |
Every S1 closes with a written root-cause analysis: timeline, evidence, the change that fixed it and the change that prevents it.
10 · Pricing
Redshift consulting and support pricing
Redshift consulting is billed at published rates, with no discovery-call theatre. Health checks and migrations are quoted on a fixed scope after a short call about the estate.
Test every change in a non-production cluster or on a restored snapshot first, keep a manual snapshot before any table redesign, node change or maintenance-track change, and maintain a robust disaster-recovery posture with cross-region snapshot copies. This applies to our recommendations as much as to anyone else's.
11 · Questions
Redshift consulting: frequently asked questions
The questions we are asked most often on the first call, answered the way we answer them on the first call.
Can Redshift consulting actually cut our bill, or is that a sales line?
It is measurable, which is the point. The savings Redshift consulting finds come from four places: clusters sized for a load window that lasts two hours a day, concurrency scaling credits burned by dashboards that should have been rewritten, Spectrum scans on data that belongs in managed storage (or the reverse), and reserved nodes that no longer match the cluster. Every figure we quote is modelled from your own SYS_QUERY_HISTORY and Cost Explorer data and labelled as an estimate until it appears on the invoice.
Should we move from RA3 to the new RG nodes?
Usually yes for clusters that query the lake, because the integrated data lake engine removes the per-terabyte Spectrum charge and AWS quotes 30% lower cost per vCPU. For a warehouse that never touches S3 the gain is smaller and should be measured on a restored snapshot first. The move itself is an elastic resize of roughly 10 to 15 minutes; zero-ETL tables resync and data shares pause during that window, so it is scheduled, not improvised.
Is Redshift Serverless cheaper than a provisioned cluster?
For bursty and intermittent work, often. For steady ELT running most of the day, a reserved RA3 or RG cluster is usually cheaper per unit of work. Most estates we see end up with both: a provisioned producer for loads and a Serverless consumer for BI, joined by a data share. We model your query history against both price lists before recommending.
Our Python UDFs stopped working. What now?
Python UDF support ended on 30 June 2026 and patch 203 began enforcing it. We inventory what remains from PG_PROC and the query history, rewrite each as a SQL UDF where the logic allows and as a Lambda UDF where it does not, and regression-test results against the old outputs. We treat it as an S2 because reports are usually already broken by the time it is noticed.
Can you migrate us off Redshift?
Yes, to BigQuery, Snowflake, Databricks or ClickHouse, with SQL translation, dual running and reconciliation before cutover. We also say plainly when the right answer is to stay and fix the table design, which is the more common outcome of Redshift consulting.
Do you cover Aurora, RDS, DynamoDB and the rest of the AWS estate?
Yes. Redshift consulting sits inside our AWS data platform practice, so the zero-ETL sources, the Glue catalogue, Lake Formation, Kinesis and MSK are handled by the same engineers who tune the warehouse.
How do you get access for Redshift consulting, and what do you need from us?
A cross-account IAM role with read-only cluster permissions and a database user with catalogue visibility (SYSLOG ACCESS UNRESTRICTED for system views). No write access until the findings report is agreed and change windows are booked.
What does the 24×7 support retainer include?
Named engineers on a rota for failed loads, hung queries, disk-full and queue incidents, cost spikes and maintenance-window problems, plus a monthly review of query history, storage growth and spend. S1 is acknowledged within 15 minutes around the clock, S2 within 12 hours, S3 within 24 hours and S4 within 48 hours, and every S1 closes with a written root-cause analysis.
Further reading
Related services
The engines Redshift consulting work usually finds beside the warehouse, and the alternatives we are honest about.
Amazon RDS and Aurora support
The zero-ETL sources, tuned by the same team.
BigQuery consulting
When the estate is on Google Cloud, or moving there.
Snowflake consulting
The usual alternative in a Redshift exit assessment.
ClickHouse consulting
For customer-facing, sub-second analytics beside the warehouse.
Databricks consulting
Lakehouse estates that share the same S3 and Iceberg tables.
Kafka consulting
The streaming ingestion path into Redshift.
Data engineering
The pipelines between sources, lake and warehouse.
PostgreSQL consulting
Where Redshift's SQL dialect and much of our practice come from.
Talk to a Principal Architect about Redshift consulting
Bring the cluster identifier and the last invoice to the first Redshift consulting call. We will tell you within the first call whether the estate needs a redesign, a node change, a Serverless split, or nothing at all.