Cliff Resnick
05/13/2026, 4:03 PMRocky
05/13/2026, 4:03 PMrefresh_mode property for MVs, specifically to distinguish between partition-based refresh and row-level incremental maintenance.
* Supported Data Sources: Currently, the INCREMENTAL refresh mode is primarily available for Apache Iceberg and Paimon tables (starting in the 4.x/development branch and v3.3+ experimental phases).
* How it works: Unlike the traditional "PCT" mode—which recomputes entire partitions if even one row changes—the INCREMENTAL mode uses snapshot deltas to process only the changed rows.
* Native Table Support: For native StarRocks tables, "incremental" refresh still mostly refers to Partition Change Tracking (PCT). If data in a specific partition changes, StarRocks will refresh that entire partition. True row-level IVM for native tables is a major roadmap item.
2. Supported Operators (IVM Phase 1)
The initial phase of IVM (available for Iceberg/Paimon) supports the following operators incrementally:
* Select / Filter
* Inner Join
* Aggregation with GROUP BY (e.g., SUM, COUNT, MIN, MAX).
* Union All
Current Limitations:
* Append-only Only: Incremental refresh currently only supports INSERT operations on the base tables. If an UPDATE, DELETE, or OVERWRITE occurs, the MV will either fail or fall back to a full/partition-level refresh (depending on whether mode is set to INCREMENTAL or AUTO).
* Unsupported Operators: Outer Joins, DISTINCT aggregations, and certain nested combinations (like Join after Aggregation) are not yet supported for incremental processing.
3. Roadmap for IVM
The StarRocks community is working through a multi-phase roadmap to expand these capabilities:
* Phase 1 (Current/Near-term): Expanding INCREMENTAL mode for Iceberg/Paimon to include more operators (Outer Joins) and improving the state management for complex aggregations.
* Native Table IVM: Extending the row-level incremental framework to StarRocks' native internal tables (OLAP tables), which would allow MVs to update without partition-level recomputation.
* Multi-level Partitioning: A major upcoming enhancement for Iceberg MVs is support for multi-level partitioning, which will further reduce the data volume scanned during refresh tasks.
* CDC Integration: Better integration with the Primary Key storage engine to handle UPDATE and DELETE deltas incrementally, which is the "holy grail" of IVM for real-time analytics.
Summary Table
Feature | PCT (Current Default) | IVM / Incremental Mode
Granularity | Partition-level | Row/Delta-level
Data Sources | Internal, Iceberg, Hive, etc. | Iceberg, Paimon (Internal in roadmap)
Efficiency | High (if many rows change in one partition) | Very High (if few rows change across many partitions)
Operator Support | Full SQL support | Limited (Inner Joins, Basic Aggr)
For users on large-scale Iceberg tables, the recommendation is to use v3.3+ or v4.0+ and explore the refresh_mode = "INCREMENTAL" property if your workload is append-heavy and involves supported operators.
References
• sql-reference/sql-statements/materialized_view/CREATE_MATERIALIZED_VIEW.md
• using_starrocks/async_mv/use_cases/create_partitioned_materialized_view.mdRocky
05/13/2026, 4:03 PMCliff Resnick
05/13/2026, 4:10 PMRocky
05/13/2026, 4:10 PMINSERT OVERWRITE only for those specific partitions in the target Iceberg table. This avoids a full table rewrite.
Example Syntax:
sql
CREATE MATERIALIZED VIEW iceberg_catalog.target_db.iceberg_mv
PARTITION BY (dt)
REFRESH ASYNC EVERY(INTERVAL 1 HOUR)
AS
SELECT dt, region, SUM(revenue)
FROM iceberg_catalog.source_db.base_table
GROUP BY dt, region;
──────────
2. Status of IVM (Incremental View Maintenance)
While the current "best method" (PCT) is partition-level, StarRocks is transitioning to true Incremental View Maintenance (IVM), which operates at the row/delta level.
* Current Status (v4.1+): StarRocks has introduced refresh_mode = 'INCREMENTAL' for MVs.
* Row-Level Processing: Instead of re-computing an entire partition, it only processes the rows added in the new Iceberg snapshots.
* Append-Only Support: Currently, this mode is optimized for append-only data. If the base table undergoes UPDATE or DELETE operations, the system typically falls back to partition-level refresh (if set to AUTO) or fails (if set to strictly INCREMENTAL).
* Supported Operators: Phase 1 of IVM supports SELECT, FILTER, INNER JOIN, and basic aggregations (SUM, COUNT, MIN, MAX).
──────────
3. How IVM Will Make This More Efficient
IVM will significantly improve efficiency in the following ways:
1. Lower Resource Consumption: Instead of scanning and overwriting 1TB of data because 1MB changed in a partition (PCT), IVM only reads and writes that 1MB delta.
2. Write Efficiency to Iceberg: In a PCT refresh, StarRocks must overwrite the entire partition's files. With IVM, StarRocks can perform an Iceberg Append or Merge operation, which is much faster and reduces I/O on the data lake storage.
3. Roadmap (v4.x):
* Broader Operator Support: Adding support for Outer Joins and more complex nested queries.
* Delete/Update Support: Expanding the incremental engine to handle DELETE and UPDATE markers from Iceberg/Paimon, allowing the MV to update row-by-row even for modified historical data.
* Cross-Catalog IVM: Enhancing the ability to maintain MVs incrementally across different catalogs (e.g., source in Iceberg, target in StarRocks native, or vice versa).
Summary: For now, use Partitioned External MVs in the Iceberg catalog. If you are on v4.1+ and your data is append-only, you can experiment with PROPERTIES("refresh_mode" = "INCREMENTAL") to move from partition-level to row-level efficiency.
References
• sql-reference/sql-statements/materialized_view/CREATE_MATERIALIZED_VIEW.md
• using_starrocks/async_mv/use_cases/data_lake_query_acceleration_with_materialized_views.md
• data_source/catalog/iceberg/iceberg_catalog.md
ReferencesRocky
05/13/2026, 4:10 PMCliff Resnick
05/13/2026, 4:25 PMRocky
05/13/2026, 4:26 PMenable_iceberg_metadata_disk_cache = true) in addition to the Data Cache. This speeds up the "planning" phase of the query by keeping Iceberg manifest files in StarRocks' memory/local disk.
References
• using_starrocks/async_mv/use_cases/data_lake_query_acceleration_with_materialized_views.md
• data_source/data_cache.md
• data_source/catalog/iceberg/iceberg_catalog.md
• deployment/shared_data/feature-support-shared-data.md
References
• best_practices/table_clustering.md
• knowledge/usage/best-practice.md
• table_design/indexes/indexes.md