refresh_column(), view.refresh(), or REFRESH statement. Either way,
auto_refresh_enabled turns it on and auto_refresh_interval_seconds sets
a minimum delay before the next automatic refresh is eligible — omit the
interval to let the server decide. What that delay is measured from differs
between the two; see Pacing follows different state for
each below. See Architecture for the
scheduler’s place among the jobs fleet.
Where the two differ
A computed column’s auto-refresh setting is per output: each column declared in the sameadd_columns call gets its own independent
interval, set when you declare it or changed later. Automatic execution
additionally needs the deployment’s column_refresh.enabled switch,
which is off in the base configuration.
CREATE time, but it can still be changed
afterward with ALTER:
SET above changes the scheduling setting immediately and
synchronously; it does not itself run a refresh. Whether and when a
refresh actually runs next is a separate, asynchronous decision the
scheduler makes against the pacing rules below. If values stop appearing
after a SET, check the column’s Job Registry history rather than assuming
the setting itself failed to apply.
Pacing follows different state for each
A computed column’s pacing is measured from the last successful refresh recorded in the Job Registry’s live history, not from a separate timestamp LanceDB keeps elsewhere. If completed jobs are archived before the column’s configured interval has elapsed, the scheduler can lose that last-success record and refresh earlier than the interval implies. Leave archival disabled, or retain live history for at least the longest configured interval you rely on. A deployment archives completed jobs by default, after a default seven-day retention threshold; check with your deployment operator if you rely on a different setting. A materialized view’s pacing instead reads a timestamp the view itself persists for when it was last checked, not Job Registry history — so archival doesn’t affect it. Once the interval has elapsed, the scheduler also skips the refresh outright if the source table’s version is unchanged since the view’s last check, rather than re-running a refresh that would produce the same rows.Catching up
Re-enabling a column’s auto-refresh after it was off catches up the entire accumulated backlog in one pass, not just rows written from that point on — “catch up,” not “resume cadence.” Disabling never skips or drops writes either: rows written while disabled simply commit with no computed value yet, the same as a row written before the column existed.What to read next
Refresh a computed column
Manual refresh, partial refreshes, and what happens on failure.
Refresh a materialized view
Manual refresh and what happens on failure, for a view.