databricks/lakehouse
intermediate
Connecting…

Predictive Optimization: stop cron-ing OPTIMIZE

Stop scheduling OPTIMIZE and VACUUM. Databricks decides which tables actually need maintenance.

Lesson 19 of 24 · Databricks path

Explain it at my level

  1. Nightly cron
  2. Wasted work
  3. UC signals
  4. Targeted
  5. Receipts
Watch the canvas:managed tablenightly cron / wasted runneeds maintenancechange statisticsusage historypredictive optimizationOPTIMIZE · VACUUM · ANALYZEoperations historyLive simulation
Unity Catalog managed tables — ops.silverdim_countryno change · 14 daysin the nightly loopfact_orders+40 GB · 9.4k small filesin the nightly loopdim_productno change · 3 daysin the nightly loopevents_raw180k files past retentionin the nightly loopdim_storeno change · 21 daysin the nightly loopWho schedules the workNightly maintenance jobloop over the whole catalogOPTIMIZE then VACUUM, every tableNo signal to act oncannot tell 40 GB from nothingso it treats both the sameYour job clusteryou provision and pay for itcost fused with everything elseOperations the loop runsOPTIMIZE × 5 tables3 of them are no-opsstill listed, still billedVACUUM × 5 tablesnothing to expire on 3survey work, paid forQueued, not rankedneed waits behind no-needwritten order, not need orderMaintenance work per nightCron5 tables rewritten · 3 of them no-opsThe loop has no idea which tables changed, so it visits all of them.
Five managed tables. A cron hits all of them; Predictive Optimization hits the two that need it.