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 时,只有在数据同时写入对象存储和本地磁盘缓存后,导入任务才会返回成功。禁用数据异步写入保证了更高的可用性,但会导致较低的导入性能。