Kenneth Oh
09/11/2026, 3:01 PMRocky
09/11/2026, 3:02 PM#general channel in the StarRocks community Slack.
References
• table_design/indexes/vector_index.md
• quick_start/shared-data.md
• faq/shared_data_faq.md
• deployment/shared_data/feature-support-shared-data.md
• data_source/data_cache.mdKenneth Oh
09/11/2026, 3:21 PMRocky
09/11/2026, 3:21 PMKenneth Oh
09/11/2026, 3:50 PMRocky
09/11/2026, 3:51 PMreplication_num property (e.g., PROPERTIES("replication_num" = "3")). If not specified, it defaults to the cluster's default (usually 3).
* Synchronous MVs: These are stored as "rollups" or internal indexes physically attached to the base table. They automatically inherit the exact same replication and distribution properties as the base table. If the base table has 3 replicas, the synchronous MV will also have 3 replicas stored on the same Backend (BE) nodes.
2. Primary vs. Secondary Replicas and Load Serving
Unlike some systems where only a "leader" can serve reads, StarRocks uses an "Any-Replica-Read" model.
* No "Primary" for Reads: For a specific segment of data (a "tablet"), all replicas are considered equal for serving query requests once a transaction is committed. There is no concept of a "Primary node" that must handle all reads for that segment.
* Load Balancing by the FE: When a query arrives, the Frontend (FE) acts as the coordinator. It generates an execution plan and decides which BE will handle each tablet. The FE uses a scheduling algorithm (typically a combination of consistent hashing and health checks) to distribute the workload.
* Helping with Load: If a BE node is under heavy load or performing poorly, the FE can route requests for that data to one of the other healthy replicas on different nodes. This allows the cluster to:
1. Parallelize queries: Different concurrent queries can read from different replicas of the same tablet.
2. Ensure High Availability: If one node fails or is extremely slow, the FE immediately switches to an alternative replica.
* CBO Optimization: You can enable enable_local_replica_selection (default: false) in the FE configuration. If set to true, the Cost-Based Optimizer (CBO) will prefer replicas on the same node as the FE (to reduce network overhead), but in high-load scenarios, it will still distribute tasks to other BEs to maintain performance.
Summary
In Shared-nothing mode, your Materialized View is replicated across multiple nodes (default 3). All these replicas are active and can serve requests. If one node hosting a segment is under load, the system's coordinator (FE) can utilize the other replicas on different nodes to balance the query pressure and ensure low latency.
References
• introduction/Architecture.md
• administration/management/resource_management/Replica.md
• sql-reference/sql-statements/materialized_view/CREATE_MATERIALIZED_VIEW.md
• administration/management/FE_configuration.md
• table_design/data_distribution/Data_distribution.md
References
• administration/management/resource_management/Replica.md
• administration/management/FE_configuration.md
• administration/management/resource_management/Load_balance.mdKenneth Oh
09/11/2026, 4:16 PMRocky
09/11/2026, 4:16 PM"enable_query_rewrite" = "true".
* Staleness: You can control how "fresh" the MV must be for a rewrite to occur using the mv_rewrite_staleness_second property.
2. Incremental Refresh (Partition-level)
StarRocks achieves "incremental" performance for async MVs primarily through Partition-level Refresh. Instead of recalculating the entire dataset, the system identifies which partitions in the base table have changed and only refreshes the corresponding partitions in the MV.
* How it works: When you define an MV with PARTITION BY, StarRocks tracks the version/last-modified-time of the base table partitions.
* Triggering:
* Internal Tables: Can be triggered automatically as soon as data in the base table changes.
* External Tables (Iceberg/S3): Does not support automatic triggers on data change. You must use a fixed-interval schedule (e.g., REFRESH ASYNC EVERY(INTERVAL 1 HOUR)) or a manual trigger (REFRESH MATERIALIZED VIEW mv_name).
* Efficiency: Even when triggered on a schedule, StarRocks will only refresh the specific partitions that are out-of-sync with the source Iceberg/S3 data, making it functionally incremental.
Key Limitations to Keep in Mind:
* Non-partitioned MVs: If the MV is not partitioned, any refresh (manual or scheduled) will perform a Full Refresh (re-executing the entire query).
* External Data Tracking: For Iceberg tables, StarRocks uses the snapshot ID or partition stats to detect changes. For other external sources like Hive, it may rely on partition file modification times.
Summary Table for Shared-nothing Async MVs
Feature | Supported | Notes
Query Rewrite | Yes | Fully supported since v2.5; supports complex joins/aggs.
Incremental Refresh | Yes | Achieved via partition-level updates.
Internal Table Source | Yes | Supports automatic "on-commit" refresh.
External Table Source | Yes | Manual or Scheduled refresh only; partition-aware.
References
• using_starrocks/async_mv/feature-support-asynchronous-materialized-views.md
• using_starrocks/async_mv/use_cases/query_rewrite_with_materialized_views.md
• sql-reference/sql-statements/materialized_view/CREATE_MATERIALIZED_VIEW.md
• using_starrocks/async_mv/use_cases/data_lake_query_acceleration_with_materialized_views.md
References
• using_starrocks/async_mv/feature-support-asynchronous-materialized-views.md