Back to Questdb

ALTER MATERIALIZED VIEW SET REFRESH

documentation/query/sql/alter-mat-view-set-refresh.md

latest3.0 KB
Original Source

Changes a materialized view's refresh strategy and parameters without recreating the view.

Syntax

ALTER MATERIALIZED VIEW viewName SET REFRESH
[ IMMEDIATE | MANUAL | EVERY interval [ START timestamp ] [ TIME ZONE timezone ] ]
[ PERIOD ( LENGTH length [ TIME ZONE timezone ] [ DELAY delay ] ) ]
[ PERIOD ( SAMPLE BY INTERVAL ) ]

Parameters

ParameterDescription
viewNameName of the materialized view to modify
IMMEDIATERefresh after each base table transaction
MANUALRefresh only when explicitly triggered
EVERY intervalRefresh on a timer (e.g., 10m, 1h, 1d)
START timestampWhen to begin the timer schedule
TIME ZONETimezone for schedule alignment
PERIOD LENGTHDefine fixed-length refresh periods
PERIOD SAMPLE BY INTERVALMatch period to the view's SAMPLE BY interval
DELAYGrace period before period closes

When to use

Change refresh strategy when:

  • Switching from real-time (IMMEDIATE) to batched (EVERY) for performance
  • Adding period-based refresh for data that arrives at fixed intervals
  • Switching to MANUAL for full control during maintenance windows

Examples

Switch to timer-based refresh

questdb-sql
ALTER MATERIALIZED VIEW trades_hourly
SET REFRESH EVERY 12h START '2025-12-31T00:00:00Z' TIME ZONE 'Europe/London';

Add period-based refresh

questdb-sql
ALTER MATERIALIZED VIEW trades_daily
SET REFRESH PERIOD (LENGTH 1d DELAY 1h);

Match period to SAMPLE BY

questdb-sql
ALTER MATERIALIZED VIEW trades_hourly
SET REFRESH PERIOD (SAMPLE BY INTERVAL);

Switch to immediate refresh

questdb-sql
ALTER MATERIALIZED VIEW trades_hourly SET REFRESH IMMEDIATE;

Switch to manual refresh

questdb-sql
ALTER MATERIALIZED VIEW trades_hourly SET REFRESH MANUAL;

Behavior

AspectDescription
Existing dataPreserved; only future refresh behavior changes
Pending refreshCompletes before new strategy takes effect
Timer resetEVERY schedule resets based on START time

Permissions (Enterprise)

Changing refresh settings requires the ALTER MATERIALIZED VIEW permission:

questdb-sql
GRANT ALTER MATERIALIZED VIEW ON trades_hourly TO user1;

Errors

ErrorCause
materialized view does not existView with specified name doesn't exist
invalid intervalTimer interval is invalid or below minimum (1m)
permission deniedMissing ALTER MATERIALIZED VIEW permission (Enterprise)

See also