使用 StarRocks 存算分离集群存储卷

1.1、创建默认存储卷

如果禁止了 StarRocks 创建内置存储卷 (将 enable_load_volume_from_conf 设置为 false),
则启动后必须先创建和设置默认存储卷,然后才能在集群中创建数据库和表。

CREATE STORAGE VOLUME default_volume
TYPE = S3
LOCATIONS = ("s3://bnddsj-noprod-starrocks/uat/starrocks")
PROPERTIES
(
    "enabled" = "true",
    "aws.s3.region" = "cn-south-1",
    "aws.s3.endpoint" = "https://obs.cn-south-1.myhuaweicloud.com",
    "aws.s3.use_aws_sdk_default_behavior" = "false",
    "aws.s3.use_instance_profile" = "false",
    "aws.s3.access_key" = "H0FNNE3FT3D5LHCBJBX2",
    "aws.s3.secret_key" = "OSJg7zjt4eJUHpEkEDwzstpMGCou3Qi583aN86w2"
);

SET default_volume AS DEFAULT STORAGE VOLUME;


1.2、查看所有存储卷
SHOW STORAGE VOLUMES;


1.3、查看存储卷详情
DESC STORAGE VOLUME 'default_volume'\G

IsDefault: true 说明是默认存储卷。
Enabled: true  说明存储卷已被启用。

1.4、查看其他表存储卷信息

select * from information_schema.tables_config where TABLE_SCHEMA not in ('sys','information_schema')\G


2.1、创建数据库和云原生表

目前,StarRocks 存算分离集群支持以下数据模型:

明细模型(Duplicate Key)
聚合模型(Aggregate Key)
更新模型(Unique Key)
主键模型(Primary Key)(当前暂不支持持久化主键索引)


mysql -h10.9.65.189 -P9030 -uroot  -p


CREATE DATABASE cloud_db;
USE cloud_db;
CREATE TABLE IF NOT EXISTS detail_demo (
    recruit_date  DATE           NOT NULL COMMENT "YYYY-MM-DD",
    region_num    TINYINT        COMMENT "range [-128, 127]",
    num_plate     SMALLINT       COMMENT "range [-32768, 32767] ",
    tel           INT            COMMENT "range [-2147483648, 2147483647]",
    id            BIGINT         COMMENT "range [-2^63 + 1 ~ 2^63 - 1]",
    password      LARGEINT       COMMENT "range [-2^127 + 1 ~ 2^127 - 1]",
    name          CHAR(20)       NOT NULL COMMENT "range char(m),m in (1-255) ",
    profile       VARCHAR(500)   NOT NULL COMMENT "upper limit value 65533 bytes",
    ispass        BOOLEAN        COMMENT "true/false")
DUPLICATE KEY(recruit_date, region_num)
DISTRIBUTED BY HASH(recruit_date, region_num)
PROPERTIES (
    "storage_volume" = "default_volume",
    "datacache.enable" = "true",
    "datacache.partition_duration" = "1 MONTH",
    "enable_async_write_back" = "false"
);


除了常规表 PROPERTIES 之外,您还需要在创建表时指定 PROPERTIES:


2.2、查看表信息
通过 SHOW PROC "/dbs/<db_id>" 查看特定数据库中的表的信息。
StarRocks 存算分离集群中表的 Type 为 CLOUD_NATIVE。StoragePath 字段为表在对象存储中的路径。

SHOW PROC "/dbs/10268";


3.1、datacache.enable    
是否启用本地磁盘缓存。默认值:true。
当该属性设置为 true 时,数据会同时导入对象存储(或 HDFS)和本地磁盘(作为查询加速的缓存)。
当该属性设置为 false 时,数据仅导入到对象存储中。

说明
如需启用本地磁盘缓存,必须在 CN 配置项 storage_root_path 中指定磁盘目录。


3.2、datacache.partition_duration    热数据的有效期。当启用本地磁盘缓存时,所有数据都会导入至本地磁盘缓存中。
当缓存满时,StarRocks 会从缓存中删除最近较少使用(Less recently used)的数据。
当有查询需要扫描已删除的数据时,StarRocks 会检查该数据是否在有效期内。
如果数据在有效期内,StarRocks 会再次将数据导入至缓存中。如果数据不在有效期内,StarRocks 不会将其导入至缓存中。
该属性为字符串,您可以使用以下单位指定:YEAR、MONTH、DAY 和 HOUR,例如,7 DAY 和 12 HOUR。如果不指定,StarRocks 将所有数据都作为热数据进行缓存。

说明
仅当 datacache.enable 设置为 true 时,此属性可用。


3.3、enable_async_write_back    
是否允许数据异步写入对象存储。默认值:false。

当该属性设置为 true 时,导入任务在数据写入本地磁盘缓存后立即返回成功,数据将异步写入对象存储。允许数据异步写入可以提升导入性能,但如果系统发生故障,可能会存在一定的数据可靠性风险。
当该属性设置为 false 时,只有在数据同时写入对象存储和本地磁盘缓存后,导入任务才会返回成功。禁用数据异步写入保证了更高的可用性,但会导致较低的导入性能。

 

posted @ 2025-06-18 00:18  屠魔的少年  阅读(112)  评论(0)    收藏  举报