Compute is where your money goes and where most of your failures happen. There are three decisions: which compute type, which access mode, and which runtime version. Get all three right and most performance and permission problems never appear.
Databricks' own docs organize compute into three families (Compute, page updated 2026-07-10):
| Serverless | Classic | SQL warehouse | |
|---|---|---|---|
| Runs in | Databricks account | your cloud account | either, depending on type |
| Start time | seconds | minutes | seconds (serverless) |
| Idle cost | none | you pay until auto-terminate | depends |
| Network control | account-level (NCC) | full — your VNet/VPC | depends |
| Custom libraries / init scripts | limited | full | n/a |
| Best for | notebooks, jobs, pipelines | custom networking, GPUs, Scala/R, init scripts | BI and SQL |
Serverless is GA and is the default in most workspaces — no enablement step needed (Serverless compute, updated 2026-07-10). Treat it as the default choice and justify departures from it, not the reverse. That's an inversion from how the platform was taught before 2025 and it catches experienced people out.
Reach for classic when you specifically need:
Serverless removes idle cost, which is usually the biggest source of waste — clusters sitting warm while an analyst is at lunch. But serverless bills at a higher rate per unit of work. The rule of thumb that survives contact with reality:
Don't guess. Module E9 shows how to answer this from your own system.billing.usage table rather
than from a blog post.
This is a rename that breaks older material, so read carefully.
| Current name | Formerly | What it means |
|---|---|---|
| Dedicated | Single user | One user (or one group) owns the compute. Full language support. |
| Standard | Shared | Multiple users share it safely, with isolation between them. |
| Auto | (new) | Databricks selects the mode for you. This is now the default selection. |
Sources: Dedicated access mode — the UI shows "Dedicated (formerly: Single-user)"; the standard-mode doc is titled "…standard access mode (formerly shared access mode)". Configure compute confirms Auto as the default.
The reason this shows up as an exam question and a real-world blocker: access mode determines what your code is allowed to do. Standard mode enforces isolation between users, which historically restricted certain operations — some RDD APIs, some Scala paths, certain init scripts. If a notebook works on your dedicated cluster and fails on the shared job cluster, access mode is the first thing to check, not the code.
The Databricks Runtime (DBR) is the packaged image: a specific Apache Spark version, a specific Delta Lake version, Python, and a pile of libraries.
Verified from the runtime support matrix on 2026-07-30:
| Version | LTS? | Spark | Delta Lake | Released | End of support |
|---|---|---|---|---|---|
| DBR 19 | no (current GA) | 4.2.0 | 4.2.0 | 2026-06-15 | TBD |
| DBR 18 LTS | ✅ | 4.1.0 | 4.2.0 | 2026-06-10 | 2029-06-10 |
| DBR 17.3 LTS | ✅ | 4.0.0 | 4.0.0 | 2025-10-22 | 2028-10-22 |
| DBR 16.4 LTS | ✅ | 3.5.2 | 3.3.1 | 2025-05-09 | 2028-05-09 |
| DBR 15.4 LTS | ✅ | 3.5.0 | 3.2.0 | 2024-08-19 | 2027-08-19 |
| DBR 13.3 LTS | ✅ | 3.4.1 | — | 2023-08-22 | 2026-08-22 ⚠️ |
Practical guidance: run LTS in production. Non-LTS releases have short support windows and force upgrades on someone else's schedule. Today that means DBR 18 LTS for new work, or 17.3 LTS if you need a version that's been in the field longer.
⚠️ DBR 13.3 LTS goes out of support 2026-08-22 — within weeks of this writing. If you have jobs pinned to it, that's an action item, not a reading item.
Note also that Lakeflow pipelines use channels rather than pinned versions: CURRENT maps to
DBR 17.3 and PREVIEW to DBR 18
(pipelines release notes, 2026-07-14).
Photon is a vectorized query engine written in C++ that replaces parts of Spark's JVM execution for SQL and DataFrame operations. It's not a different API — you don't write Photon code. You enable it, and qualifying operations get faster.
It helps most on scans, filters, joins, and aggregations over Delta/Parquet. It does nothing for arbitrary Python UDFs, because those can't be vectorized into its engine. If your job is one big Python UDF, Photon will not save you; rewriting the UDF might.
Primary source, if you want the engineering detail: Photon: A Fast Query Engine for Lakehouse Systems (SIGMOD 2022).
Work top to bottom; stop at the first line that applies.
Then: pick the latest LTS runtime, and enable Photon unless you've measured that it doesn't help your specific workload.