Skip to main content
rightsizing · snowflake

Snowflake tables paying for Automatic Clustering while serving fewer than 100 queries

resource types
1
rule IDs covered
1
severity
low

What does ZopNight detect here?

ZopNight flags a Snowflake table that consumed Automatic Clustering credits over the last 30 days while fewer than 100 queries ran against it. Reclustering is billed in credits to keep the table ordered for pruning, so on a rarely queried table `ALTER TABLE ... SUSPEND RECLUSTER` usually removes the charge with little query impact.

Signal and threshold

How ZopNight evaluates Snowflake tables paying for Automatic Clustering while serving fewer than 100 queries.
Field Value
Rule IDsRC-2112
Categoryrightsizing
Severitylow
Metricclustering credits and query count
Threshold> 0 credits and < 100 queries
Evaluation window30d
SourceZopNight
Permissions usedSNOWFLAKE.USAGE_VIEWER · SNOWFLAKE.GOVERNANCE_VIEWER

Keeping a table sorted costs credits in the background

When a table has a clustering key, Automatic Clustering reclusters it in the background as DML makes the data less ordered, and bills that work in credits. Clustering Classic charges for the serverless compute used; Optima Clustering, which newly clustered tables use from September 1, 2026, charges by uncompressed data ingested instead. Snowflake lists the triggers for reclustering activity: a table that is not optimally clustered, or a changed clustering key. The benefit comes only from queries that prune micro-partitions using that key.

On a large table that dashboards filter all day, the trade is usually good. On a table written constantly but queried a few times a month, the credits keep flowing while almost nothing benefits from the ordering they pay for.

Clustering credits against query activity

AUTOMATIC_CLUSTERING_HISTORY shows the cost side:

Terminal window
SELECT database_name, schema_name, table_name,
SUM(credits_used) AS clustering_credits_30d,
SUM(num_bytes_reclustered) AS bytes_reclustered_30d
FROM SNOWFLAKE.ACCOUNT_USAGE.AUTOMATIC_CLUSTERING_HISTORY
WHERE start_time >= DATEADD('day', -30, CURRENT_TIMESTAMP())
GROUP BY 1, 2, 3
HAVING SUM(credits_used) > 0
ORDER BY clustering_credits_30d DESC;

For the benefit side, count the queries that read each candidate over the same 30 days in ACCESS_HISTORY (base_objects_accessed). The clustering view needs USAGE_VIEWER and lags by up to 3 hours; access history needs GOVERNANCE_VIEWER and Enterprise Edition.

Any clustering spend with under 100 queries in 30 days

ZopNight sums the table’s Automatic Clustering credits over the last 30 days and requires the total to be above zero. It then sums the queries against the table in the same window and fires when there were fewer than 100. The check does not look at clustering depth or at whether the queries actually filter on the clustering key.

When the table is left alone

A missing or empty series for either credits or queries means no finding. Tables with 100 or more queries in the window pass, however much clustering costs, because the rule cannot measure pruning benefit and leaves heavily used tables to your judgement. No finding is raised when the account’s credit rate is unavailable, since the result would have no price.

How the saving is priced

Suspending reclustering stops these charges, so the saving is the table’s clustering credits at the account’s per-credit rate for its edition, falling back to the Enterprise rate if the edition is unknown:

Terminal window
saving per month = clustering credits over 30 days x credit rate for the edition

Suspending reclustering

  1. Check the few queries that do run. If they filter on the clustering key and scan a large table, compare their runtime before and after on a clone before deciding.
  2. Suspend: ALTER TABLE sales.events SUSPEND RECLUSTER; While suspended, the table is never reclustered and incurs no clustering charges.
  3. If query patterns change later, ALTER TABLE sales.events RESUME RECLUSTER; restarts it.

See it fire on your bill.

Connect an account read-only in about five minutes. Findings start with the first scan.

472 rule families across 353 resource types on 22 platforms. Every threshold, metric, and IAM action is documented on these pages before you grant anything.

472 rule families documented
353 resource types covered
read-only default access level
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·