Crosshire
← Databricks Audit
— Crosshire / Learn · Tech · Databricks · Audit

Compute

What compute exists, how it's configured, and how hard it's actually working. Cluster and SQL-warehouse config, node utilization, idle ratio, autoscale churn, idle tails and pools.

10 queriesbuilt on system.*

System tables used

system.compute.clusters

The configuration history of classic compute — all-purpose, jobs, Lakeflow SDP/pipeline, and pipeline-maintenance clusters. Excludes SQL warehouses and serverless entirely.

  • Grain: slowly-changing — one row per cluster_id per configuration change (change_time). Queries take the latest row per cluster_id (ROW_NUMBER() … ORDER BY change_time DESC) and keep only rows where delete_time IS NULL.
  • Key columns used: cluster_id, cluster_name, owned_by, driver_node_type / worker_node_type, worker_count (NULL when autoscaling), min_autoscale_workers / max_autoscale_workers (NULL when fixed-size), auto_termination_minutes (idle auto-stop config), enable_elastic_disk, cluster_source, dbr_version (runtime/EOL sprawl), data_security_mode (access-mode posture: USER_ISOLATION / SINGLE_USER / LEGACY_* / NONE / null), policy_id (NULL = no compute-policy coverage), driver_instance_pool_id / worker_instance_pool_id, tags (chargeback), init_scripts, aws_attributes / azure_attributes / gcp_attributes (STRUCTs — only the host cloud's is populated; hold spot/on-demand mix), create_time / delete_time / change_time, workspace_id, account_id.
  • Availability: GA. Requires Unity Catalog and SELECT on system.compute (enable the compute schema per-metastore). Regional — run per metastore region. No runtime_engine / Photon column (confirmed absent on all clouds). Cloud-attribute STRUCTs are selected whole; extracting a named subfield is unverified.

system.compute.warehouses

Configuration history of SQL warehouses.

  • Grain: slowly-changing — one row per warehouse_id per change; queries take the latest row and keep delete_time IS NULL.
  • Key columns used: warehouse_id, warehouse_name, workspace_id, account_id, warehouse_type (CLASSIC/PRO/SERVERLESS), warehouse_channel, warehouse_size (XS … 4X_LARGE, plus 5X_LARGE Beta on PRO/SERVERLESS), min_clusters / max_clusters (autoscaling range), auto_stop_minutes (idle suspend config), tags (map, chargeback), change_time, delete_time.
  • Availability: GA. UC + SELECT on system.compute. Regional. Empty if the workspace runs no SQL warehouses.

system.compute.warehouse_events

State-transition event log for SQL warehouses — the behavioral counterpart to warehouses.

  • Grain: one row per warehouse state-change event (event_time).
  • Key columns used: warehouse_id, event_type, event_time, cluster_count (clusters running at event time). Authoritative 6-value enum: SCALED_UP, SCALED_DOWN, STOPPING, RUNNING, STARTING, STOPPED. (SCALING_UP / SCALING_DOWN appear in one official sample but are undocumented — the queries ignore them.)
  • Availability: GA. UC + SELECT on system.compute. Regional. Carries no DBU/$ — a warehouse's idle tail and autoscale churn are behavioral only. Retention is limited; window queries assume events exist within :period_days.

system.compute.node_timeline

Per-minute hardware-utilization telemetry for classic-compute nodes (driver and every worker).

  • Grain: one row per node-minute — a single minute-slice for one node. A raw row count is minutes, not hours.
  • Key columns used: cluster_id, node_type, driver (bool), start_time / end_time, cpu_user_percent / cpu_system_percent (busy = sum; idle threshold in compute_idle_node_ratio is sum < 5%), cpu_wait_percent, mem_used_percent (0-100, includes background processes), network_sent_bytes / network_received_bytes. (disk_free_bytes_per_mount_point is a map — not selected.)
  • Availability: GA. UC + SELECT on system.compute. Regional. Retention is 90 days only:lookback_days is capped at 90; a longer window silently truncates. Classic compute only — there are no rows for SQL warehouses or serverless. Nodes that ran < 10 minutes may not appear (short-job blind spot). No DBU/$.

system.compute.node_types

Static reference dimension of node/instance types and their hardware specs — the denominator for right-sizing.

  • Grain: one row per node_type. No history, no aggregation.
  • Key columns used: node_type (join key to clusters.driver/worker_node_type and node_timeline.node_type), core_count (double), memory_mb (long), gpu_count (long), account_id.
  • Availability: GA. UC + SELECT on system.compute. Indefinite retention. Cloud-specific catalog (the node types listed are those available in the account's cloud/region).

system.compute.instance_pools (Public Preview)

Configuration history of instance pools (pre-warmed idle VMs shared by clusters).

  • Grain: slowly-changing — latest row per instance_pool_id, keep delete_time IS NULL.
  • Key columns used: instance_pool_id, instance_pool_name, node_type, min_idle_instances (bigint — the always-on idle floor that drives pool waste), max_capacity (bigint), idle_instance_autotermination_minutes, enable_elastic_disk, preloaded_spark_version, preloaded_docker_images (Docker/preload risk), tags, aws/azure/gcp_attributes + disk_spec (STRUCTs selected whole), create_time / delete_time / change_time, workspace_id, account_id.
  • Availability: Public Preview — may be empty or disabled (expect an empty-but-valid result or TABLE_OR_VIEW_NOT_FOUND if the schema isn't enabled). UC + SELECT on system.compute. Regional. Idle-waste dollarization needs node cost from the billing domain, not here.

system.compute.instance_events (Public Preview)

Cloud-VM lifecycle/state-transition events for classic-compute instances — the source for spot-vs-on-demand mix and true instance idle-vs-active time.

  • Grain: one row per instance state-change/lifecycle event (event_time).
  • Key columns used: workspace_id, instance_id, node_type, availability_type (ON_DEMAND/SPOT on AWS/Azure, ON_DEMAND/PREEMPTIBLE on GCP), state (INSTANCE_LAUNCHING / INSTANCE_READY = idle / INSTANCE_PLACED = in use / INSTANCE_TERMINATED), event_type (INSTANCE_LAUNCHING / STATE_TRANSITION), cluster_id (populated only when state = INSTANCE_PLACED), event_time.
  • Availability: Public Preview — may be empty/disabled (degrade to "preview table not populated"). UC + SELECT on system.compute. Regional, cloud-specific enum values. The query is a count/summary aggregate; converting READY vs PLACED events into exact idle-vs-active minutes needs per-instance windowing that is not attempted here.

Before you run these

  • Databricks system.* schemas aren’t uniformly available — several (e.g. system.query, system.lakeflow) are still in preview or must be enabled per-metastore. A query that returns nothing usually means its schema isn’t enabled for your account yet.
  • Every dollar figure is est · at list (pre-discount, DBU-only from system.billing.list_prices) unless a query explicitly joins account_prices.
  • Sample-output tables are illustrative synthetic rows, never real account data.

Queries in this domain

01Warehouse Idle-Tail Seconds compute_warehouse_idle_gapsPer SQL warehouse, the total seconds spent RUNNING (the auto-stop idle tail), STARTING (cold-start tax) and STOPPED, the worst single RUNNING gap, and event counts by state — all derived from state-transition events over the trailing :period_days window.02Live Classic Cluster Config Baselineclassic_clusters_config_currentOne row per live classic compute cluster showing its latest configuration — node types, autoscale range, idle auto-stop, runtime, access mode, policy coverage, pool linkage, tags, init scripts and cloud attributes.03Idle Classic Clusters, Rankedcompute_idle_node_ratioOne row per classic cluster over the lookback window, reporting total vs idle minute-slices (idle = CPU under 5%) alongside average and peak CPU and memory and the observed time span - the ranked auto-stop / auto-termination candidate list.04SQL Warehouses Thrashing Clusterscompute_warehouse_autoscale_churnOne row per SQL warehouse over the trailing window, counting its scale-up and scale-down events, the observed span those events cover, and the max/average clusters running — the raw signal for detecting autoscale churn.05Spot Mix and Instance Idle Signalinstance_events_idle_activeA per-workspace, per-node-type, per-availability/state/event-type roll-up of cloud-VM lifecycle events for classic compute, showing how many events and distinct instances occurred and the first/last time each combination was seen over the trailing window.06Idle Instance-Pool Waste Snapshotinstance_pools_idle_capacityOne row per live instance pool showing its always-on idle floor, capacity ceiling, idle auto-termination, preloaded images and node type — the pre-warmed-VM waste and right-sizing baseline.07Right-Sizing Evidence From Node Telemetrynode_timeline_utilizationOne row per cluster / node-type / driver-vs-worker role summarizing observed CPU, memory, CPU-wait and network from per-minute classic-compute hardware telemetry over a trailing window (≤90 days).08Node Type Hardware Spec Catalognode_types_referenceA static reference list of every node/instance type available in the account with its vCPU, memory, and GPU specs — the hardware denominator for right-sizing math.09Live SQL Warehouse Config Baselinesql_warehouse_config_currentOne row per live (non-deleted) SQL warehouse showing its latest configuration — type, channel, size, autoscale range, idle auto-stop, and chargeback tags.10SQL Warehouse Event Activitysql_warehouse_events_activityOne row per SQL warehouse and event type over the window, giving the event count, the first and last time that event fired, and the peak and average number of clusters running when it did.