
At the risk of posting two navel-gazing posts too close together, this month represents my three-year anniversary of working at Snowflake. I joined three years ago on a referral from a friend after getting laid off. PIVOT I’ve done a…

One of the ways we can see that a query might be handling too much data for a particular warehouse is by looking at spilling. This article doesn’t apply to adaptive warehouses as I haven’t had the chance to experiment…

There are some really cool details about Snowflake’s clustering. Working with these details can help reduce the cost of clustering. In the last article, I dug into how aligning a clustering key with data arrival patterns can help you reduce…

After almost three years at Snowflake, I’m making a move – literally. I’ve signed a contract with Snowflake Germany and will be relocating to Berlin, where I’ll keep doing essentially the same job, just from a different corner of the…

Choosing a clustering key isn’t just about which columns or functions to include — it’s about how your data arrives. In most real-world systems, data lands in approximate or exact date order. That arrival pattern interacts with your clustering key…

Queries in Snowflake try to use the entire standard warehouse. So what happens when we’re running dozens of queries on the same warehouse at the same time, and each of those queries is attempting to use all of the resources…

The variety and number of ways that people test performance on Snowflake incorrectly continues to amaze me. I don’t think that testing the performance of a query in isolation is difficult, but it requires a very scientific approach. We need…

The age of AI may be here, but there are still some things an LLM does better than others. There have been different levels of automation or autonomics added to the systems I work with my whole career. With LLMs,…

There is a mandate at work to use AI. This makes some sense as people are somewhat resistant to change, and I do work for a company that is all about AI. I’ve incorporated LLMs into my workflow in several…

When using Snowflake, compute and storage are fully separated. This means choosing different sizes (and types) of compute to use against the same data for different purposes. Even at the same time. It used to be that size was the…

Benchmarking is a topic I’ve seen discussed for my entire career working with databases. We used to watch the TPC-C results published, when I was working with primarily OLTP systems, and was amazed to see software I worked with every…

Join explosions in Snowflake can cause significant performance problems. I thought I’d spend some time digging into specific examples of cases where join explosions happen and how to work around the explosion in those examples. Disjunct Join Predicates What is…