惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Troy Hunt's Blog
Blog — PlanetScale
Blog — PlanetScale
Engineering at Meta
Engineering at Meta
F
Full Disclosure
Recorded Future
Recorded Future
The GitHub Blog
The GitHub Blog
Microsoft Security Blog
Microsoft Security Blog
GbyAI
GbyAI
博客园_首页
博客园 - 叶小钗
MongoDB | Blog
MongoDB | Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Recent Commits to openclaw:main
Recent Commits to openclaw:main
H
Hacker News: Front Page
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
博客园 - 司徒正美
Webroot Blog
Webroot Blog
Google DeepMind News
Google DeepMind News
Help Net Security
Help Net Security
Cloudbric
Cloudbric
PCI Perspectives
PCI Perspectives
有赞技术团队
有赞技术团队
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
TaoSecurity Blog
TaoSecurity Blog
L
Lohrmann on Cybersecurity
量子位
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tailwind CSS Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
B
Blog RSS Feed
Apple Machine Learning Research
Apple Machine Learning Research
大猫的无限游戏
大猫的无限游戏
P
Proofpoint News Feed
N
News and Events Feed by Topic
罗磊的独立博客
T
Threat Research - Cisco Blogs
Schneier on Security
Schneier on Security
T
Tor Project blog
IT之家
IT之家
M
MIT News - Artificial intelligence
S
Security @ Cisco Blogs
O
OpenAI News
AI
AI
S
Securelist
Simon Willison's Weblog
Simon Willison's Weblog
The Last Watchdog
The Last Watchdog
月光博客
月光博客
Security Archives - TechRepublic
Security Archives - TechRepublic
L
LINUX DO - 热门话题

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
Snowflake FinOps: The Compute Credit Trap and How to Stop It
Muskan · 2026-05-05 · via DEV Community

Snowflake FinOps: The Compute Credit Trap and How to Stop It

A LARGE Snowflake warehouse left running 24/7 costs $11,520 per month on AWS Standard Edition, per the Snowflake pricing documentation. Multiply that by the four warehouses a typical data team runs (ETL, dashboards, ad-hoc, ML feature pipelines) and you are at $46,080 per month before storage, before reservations, before anyone has tuned a single query. Most teams pay this number and assume it is the cost of doing data warehousing at scale.

It is not. The same workload, with auto-suspend tuned, warehouses right-sized, multi-cluster scaling capped, and query-level attribution in place, runs $18,000 to $25,000 per month with identical performance for end users. The 60% gap is not technical complexity. It is configuration discipline applied to four specific levers.

FinOps is the engineering practice of bringing financial accountability to variable cloud spend by aligning engineering, finance, and product on continuous cost decisions, per the FinOps Foundation. Applied to Snowflake, the practice has four levers: auto-suspend, warehouse sizing, multi-cluster caps, and query-level attribution. This piece covers each in order of impact.

Why Snowflake Bills Surprise Engineering Teams

The credit model is straightforward in isolation and brutal in aggregate. Warehouses bill per second with a 60-second minimum charge per start. Warehouse size doubles the per-hour credit consumption at every tier. Multi-cluster warehouses bill each running cluster independently. Idle time bills until auto-suspend fires.

Warehouse Credits/hour Standard ($2/credit) monthly always-on Enterprise ($3/credit) Business Critical ($4/credit)
XSMALL 1 $1,440 $2,160 $2,880
SMALL 2 $2,880 $4,320 $5,760
MEDIUM 4 $5,760 $8,640 $11,520
LARGE 8 $11,520 $17,280 $23,040
XLARGE 16 $23,040 $34,560 $46,080
2XLARGE 32 $46,080 $69,120 $92,160

The multi-cluster multiplier compounds these numbers. A LARGE warehouse with auto-scaling configured to 10 max clusters bills up to $115,200 per month if all 10 clusters run continuously. The default scaling policy adds clusters aggressively and removes them slowly, so most teams pay for clusters that ran briefly during a lunchtime spike and stayed warm for hours afterward.

This pattern works when traffic is genuinely concurrent and bursty. It breaks when "concurrency" actually means "five analysts ran a query in the same 30-minute window," because Snowflake's queue is fast enough to handle that on a single cluster without user-visible latency. The 10-cluster cap was the wrong signal to send.

Auto-Suspend: The Setting That Saves 30% in One Edit

Auto-suspend is the single highest-impact configuration change in Snowflake FinOps. The default timeout is 600 seconds (10 minutes). Idle time is billed until the timeout fires. For a warehouse with 30 idle gaps per day, the default leaves 270 minutes (4.5 hours) of compute on the bill that produced no query work.

Reducing the timeout to 60 seconds captures most of those minutes back. The cost is a 1-3 second warm-start delay on the first query after a suspend. For analytical workloads (dashboards, ad-hoc queries, BI tools), users do not notice the warm-start. For latency-sensitive serving (a few production lookups via Snowflake), the longer timeout is justified.

Workload type Recommended auto-suspend Why
Ad-hoc analytics, BI dashboards 60 seconds Idle gaps are 5-30 minutes between queries; warm-start is invisible
ETL / batch transforms 30 seconds Jobs run end-to-end; nothing happens between runs
ML feature pipelines 60 seconds Scheduled runs with predictable gaps
Production lookup serving 5-10 minutes Warm-start latency hurts SLO; tolerate higher idle bill
Dev / sandbox warehouses 30 seconds Queries are sporadic; nobody cares about warm-start

diagram

The math is simple. A LARGE warehouse with 30 idle gaps per day at 8 credits per hour costs $0.13 per minute. Default 600s timeout pays for 9 extra minutes per gap, 270 minutes per day, $35 per day, $1,050 per month, just on idle time that produced no useful work. Across four warehouses, $4,200 per month from one configuration setting.

This pattern works when the warehouse is not feeding a latency-critical serving path. It breaks when a 1-3 second warm-start delay violates an SLO, in which case 5-minute timeouts are the right tradeoff for that specific warehouse.

Right-Sizing Warehouses With Query History

Most teams size their warehouse for the worst query they ever run. They notice a slow ETL job, bump the warehouse from MEDIUM to LARGE, and never revisit the decision. The other 80% of queries on that warehouse run on capacity they do not need.

The fix is data-driven. The ACCOUNT_USAGE.QUERY_HISTORY view records every query with execution time, warehouse size, credits consumed, user, and role. Pulling p50, p95, and p99 query duration over 14 days surfaces the actual sizing decision. The 80/20 split shows up immediately: 80% of queries complete in under 30 seconds, 20% take 5-30 minutes.

diagram

The split is a routing decision. BI dashboards and quick analyst queries go to a SMALL warehouse with aggressive auto-suspend. The 20% of long-running ETL or analytical queries go to a separate LARGE warehouse, on demand.

Workload Old setup New setup Monthly compute
One LARGE warehouse for everything (12h/day active) LARGE @ 12h/day $5,760
Split: SMALL for fast queries (12h/day), LARGE for slow (2h/day) SMALL 12h + LARGE 2h $2,400
Saving $3,360 (58%)

The right-sizing process takes one analyst-week. Pull the QUERY_HISTORY data, eyeball the duration histogram, set up the routing, watch QUERY_HISTORY for a week to confirm no regressions. The 50%+ savings on warehouse compute are durable as long as the workload mix does not shift dramatically.

This pattern works when query-routing can be done at the SQL layer (BI tools, dbt, Airflow operators all support warehouse hints). It breaks when the application layer hard-codes a single warehouse name with no override path, because then the routing has to be wired into the connection pool.

Multi-Cluster Scaling: The 10-Cluster Myth

Multi-cluster warehouses solve a real problem: too many concurrent queries queue and slow each other down. The default solution is to set max clusters to 10 and walk away. The bill arrives a month later.

The two scaling policies behave very differently. Standard policy adds a cluster as soon as a query queues, removes a cluster only after a long idle period. Economy policy delays adding a cluster (queries queue briefly first), and removes idle clusters faster. For most analytical workloads, Economy is the right default.

diagram

Then there is the max-cluster cap. The right way to set it is to measure peak concurrency from QUERY_HISTORY (group by minute, count distinct queries running, take the p99). Most teams find their actual peak is 3-5 concurrent queries, not 50. Capping max clusters at 3-5 produces the same user experience at a fraction of the cost.

Max clusters Monthly cost (LARGE, all clusters running 12h/day) Notes
10 (default-ish) $57,600 Default if you accept the wizard. Overkill for almost everyone.
5 $28,800 Common right-sizing target after measurement.
3 $17,280 Adequate for most analytics teams under 50 daily users.
1 (multi-cluster off) $5,760 Right answer when concurrency is below 3 most of the time.

The cap works because Snowflake queues briefly when the cap is hit, and queues clear in seconds for typical query mixes. The user impact is a 1-3 second wait for the 5th simultaneous query, not the 30-second wait many teams fear.

Query-Level Cost Attribution Without a Vendor

Most teams cannot tell you what their queries cost per team. They have one big Snowflake bill and a vague sense of who runs what. Without attribution, there is no per-team budget, no incentive to tune queries, and no signal when one team is burning 70% of credits.

The data is already there. The QUERY_HISTORY view records USER_NAME, ROLE_NAME, WAREHOUSE_NAME, WAREHOUSE_SIZE, EXECUTION_TIME, CREDITS_USED_CLOUD_SERVICES, and BYTES_SCANNED. Joined with a role-to-team mapping table, the query produces per-team cost attribution at query granularity.

diagram

The aggregation query takes 50 lines of SQL. Run it daily, post the per-team credit consumption to a Slack channel, and within a quarter the highest-cost teams will tune their own queries because the cost is visible.

Team Credits/day Monthly cost (Standard $2/credit) Top query type
Data Science 280 $16,800 Feature engineering scans
BI / Analytics 95 $5,700 Daily dashboard refresh
ETL / Platform 60 $3,600 Hourly transforms
Product Analytics 35 $2,100 Ad-hoc cohort queries
Engineering (debug) 12 $720 Production data lookups

Resource monitors enforce the budget. Configure SUSPEND on dev warehouses when daily credit budgets are exceeded (zero blast radius). Configure NOTIFY on prod warehouses (alerts to Slack, no kill). Most teams never set these up because they fear killing legitimate workloads. The right pattern is dev = enforce, prod = alert, with weekly review.

Storage Cost: Time Travel, Fail-Safe, and the 21TB Footprint

Compute is 70-90% of Snowflake bills. Storage is the rest, and it is consistently mis-tuned. Time Travel retention is the main lever. Fail-Safe is non-configurable and adds 7 days on top of whatever Time Travel is set to.

A 10TB working set with 90-day Time Travel and Fail-Safe occupies roughly 21TB of storage in practice (the working set, plus 90 days of changes, plus 7 days of Fail-Safe). At $23 per TB per month on AWS, that is $483 per month for storage that mostly stores data no one queries.

Time Travel retention Effective storage (10TB working set) Monthly cost (AWS, $23/TB)
1 day (Standard default) ~12TB $276
7 days ~14TB $322
30 days ~17TB $391
90 days (Enterprise max) ~21TB $483

Most production tables need 7 days of Time Travel. Audit-relevant tables justify 30 days. The 90-day setting exists because someone read the docs, set the maximum, and never returned to the question. Reducing to 7 days saves 33% of storage spend without removing anything that gets used.

Zero Copy Clone is the second storage lever. Cloning a 10TB production database to dev costs zero storage initially (clones are metadata-only) and only diverges as writes happen. Most dev teams instead create full copies, paying for the full 10TB twice. One ALTER DATABASE CLONE statement replaces gigabytes of redundant storage.

A 90-Day Snowflake Cost Reduction Plan

Snowflake cost reduction sequences cleanly. Each phase produces measurable savings, and the data from one phase informs the next.

Phase Weeks Action Effort Expected saving
Baseline 1-2 Tag every warehouse by workload type. Pull QUERY_HISTORY for 14 days. Compute per-warehouse idle ratio, p95 query duration, peak concurrency. 1 analyst-week 0 (data only)
Auto-suspend 3 Reduce timeout to 60s on analytical warehouses, 30s on ETL/dev. 1 day 25-35% on idle warehouse cost
Workload routing 4-6 Split fast vs slow queries. SMALL warehouse for 80%, LARGE for 20%. Update BI tool / dbt / Airflow to use right warehouse per workload. 2 weeks 40-50% on warehouse compute
Multi-cluster cap 7 Switch to Economy policy. Cap max clusters at p99 measured concurrency. 2 days 30-50% on multi-cluster overhead
Query attribution 8-9 Build daily aggregation joining QUERY_HISTORY with role mapping. Post per-team credit consumption to Slack. 1 week Sustains future savings via behavior change
Resource monitors 10 SUSPEND on dev, NOTIFY on prod with weekly budget review. 2 days Bounds runaway costs
Storage retention 11 Reduce Time Travel to 7 days on most tables, 30 days on audit. Adopt Zero Copy Clone for dev. 1 week 30-50% on storage cost
Reservation evaluation 12 If 60%+ of compute is steady-state, evaluate Capacity Pre-Purchase. 2 days + procurement 25-40% on baseline compute

A team starting at $50,000 per month in Snowflake spend typically lands at $20,000-$28,000 after 90 days. The work is configuration discipline, not a re-platforming. Each phase is reversible if the savings come at a real performance cost. Most do not.

To get started, pull QUERY_HISTORY for the last 14 days from your busiest warehouse. Compute average idle ratio, p95 query duration, and per-team credit consumption. The numbers will surface the highest-impact fix specific to your workload, which is almost always either auto-suspend or warehouse right-sizing. Pair the reduction work with autonomous remediation so the 90-day savings hold once attention shifts elsewhere.