Yes, multi-warehouse support was officially announced to be moved into the StarRocks open-source project during the StarRocks Summit in late 2025. It is a key part of the
StarRocks 4.0/2026 roadmap, specifically designed for the
Shared-data (storage-compute separation) architecture.
If you are using a version where full multi-warehouse management is not yet available, or if you are looking for the best way to achieve ingest/query split today, here is the recommended approach:
1. Use Shared-data Architecture
The foundation for ingest/query split is the
Shared-data mode (introduced in v3.0). In this mode, data is stored in remote object storage (S3, GCS, HDFS, etc.), and compute is handled by
Compute Nodes (CN).
• Unlike the Shared-nothing architecture (where BEs store local data), CNs are stateless.
• This allows you to scale compute independently of storage.
2. Isolate with Compute Node (CN) Groups
You can achieve a "multi-warehouse" effect by grouping your CN nodes.
•
Dedicated Ingestion Group: Point your loading tasks (like Stream Load or Broker Load) to a specific set of CN nodes.
•
Dedicated Query Group: Point your BI tools or SQL clients to a different set of CN nodes.
• Because they all share the same remote storage and FE metadata, the ingestion group updates the data while the query group reads it without competing for the same CPU/Memory resources.
3. Resource Groups (Fine-grained Isolation)
If you are running everything on a single cluster (or even within the same CN group), you should use
Resource Groups.
•
Hard Limits: From v3.3.5 onwards, StarRocks supports hard CPU limits (
exclusive_cpu_cores
).
•
Workload Classification: You can create a resource group for
INSERT
tasks and another for
SELECT
queries.
•
Example:
sql
CREATE RESOURCE GROUP ingest_group
PROPERTIES (
"cpu_core_limit" = "10",
"mem_limit" = "20%",
"concurrency_limit" = "20"
);
-- Bind a user or specific query patterns to this group
SET PROPERTY FOR 'loader_user' 'resource_group' = 'ingest_group';
4. Warehouse-based Statistics (v3.2+)
StarRocks also supports offloading background tasks. For example, you can execute
statistics collection (which can be resource-intensive) in a separate "warehouse" or CN group to ensure it doesn't impact user queries.
Summary Recommendation
*
For the cleanest split: Deploy a
Shared-data cluster and use separate
CN node groups for ingestion and querying. This prevents "noisy neighbor" issues at the hardware level.
*
For cost efficiency: Use a single cluster with
Resource Groups and
Query Queues to enforce strict resource boundaries between loading and analytical workloads.
References
•
administration/management/resource_management/resource_group.md
•
knowledge/usage/best-practice.md
•
faq/resource_isolation_faq.md
•
administration/management/resource_management/query_queues.md