GaussDB for Cassandra 创表规则介绍

举报
cassandra_developer 发表于 2020/07/06 20:56:23 2020/07/06
1.5w+ 0 0
【摘要】 由于GeminiDB for Cassandra 存储使用的是rocksdb,在创建表的过程中,其实是对底层存储rocksdb的操作,rocksdb 存储引擎采用的是 wal + memtable 数据结构来实现数据的写入,memtable 的大小(write_buffer_size )和个数(write_buffer_number)都需要提前配置。 其实是对集群内存的一种预...

        由于GaussDB for Cassandra 存储使用的是rocksdb,在创建表的过程中,其实是对底层存储rocksdb的操作,rocksdb 存储引擎采用的是 wal + memtable 数据结构来实现数据的写入,memtable 的大小(write_buffer_size )和个数(write_buffer_number)都需要提前配置。 其实是对集群内存的一种预分配操作,所以GaussDB for Cassandra  对表的数目会有一定上限要求。

约束

节点内存的一半分配给存储引擎rocksdb使用

奇数数目集群容忍故障节点为 N  -1 / 2  , 偶数数目集群容忍故障节点为 N / 2 

创表数目粗略计算方式

根据实例规格不同,创表需要的内存稍有不同,可以简单按照单张表 768M计算。

所以 创表数目上限 =  集群可用总内存 / 单表所需内存

奇数数目集群

集群可用内存 = 节点内存 / 2  *  (N / 2 + 1)

偶数数目集群 

集群可用内存 = 节点内存 / 2  *  (N / 2 )

例如:

3节点 4U16G 实例 可用内存 =  16 / 2 * ( 3 / 2 + 1) = 16G 

创表数目上限 = 16 * 1024 M /  768 =   21

4节点4U16G实例 可用内存 =  16 / 2 * ( 4 / 2) = 16G 

创表数目上限 = 16 * 1024 M /  768 =    21

5节点4U16G实例可用内存 =  16 / 2 * ( 5 / 2 + 1) = 24G 

创表数目上限 = 24 * 1024 M /  768 =   32

4U16G 规格节点个数和表个数对应关系表

集群可用内存参考上述公式,单表占用 内存: 768M(表tokens个数为默认值12,如果单独设置了tokens,则需要单独计算。换算公式 : (768 / 12 )* tokens个数 )

节点数 3节点 4节点 5节点 6节点 7节点 8节点 9节点 10节点 11节点 12节点
可创建表数目 21 21 32
32 42
42 53 53 64
64

备注:上述表个数都是按照普通表计算的,如果开启了cdc 功能,资源耗费为一张普通表。如果开启了流表,一张流表耗费的资源为2.5个普通表,

8U32G 规格节点个数和表个数对应关系表

集群可用内存参考上述公式,单表占用 内存: 1440M(表tokens个数为默认值12,如果单独设置了tokens,则需要单独计算。换算公式 : (1440/ 12 )* tokens个数 )

节点数 3节点 4节点 5节点 6节点 7节点 8节点 9节点 10节点 11节点 12节点
可创建表数目 22 22 34
34 45
45 56 56 68
68

备注:上述表个数都是按照普通表计算的,如果开启了cdc 功能,cdc资源耗费为一张普通表。如果开启了流表,一张流表耗费的资源为2.5个普通表。

16U64G 规格节点个数和表个数对应关系表

集群可用内存参考上述公式,单表占用 内存: 1440M(表tokens个数为默认值12,如果单独设置了tokens,则需要单独计算。换算公式 : (1440/ 12 )* tokens个数 )

节点数 3节点 4节点 5节点 6节点 7节点 8节点 9节点 10节点 11节点 12节点
可创建表数目 45 45 68 68 91 91 113 113 136 136

备注:上述表个数都是按照普通表计算的,如果开启了cdc 功能,cdc资源耗费为一张普通表。如果开启了流表,一张流表耗费的资源为2.5个普通表。

32U128G 规格节点个数和表个数对应关系表

集群可用内存参考上述公式,单表占用 内存: 1920M(表tokens个数为默认值12,如果单独设置了tokens,则需要单独计算。换算公式 : (1920 / 12 )* tokens个数 )

节点数 3节点 4节点 5节点 6节点 7节点 8节点 9节点 10节点 11节点 12节点
可创建表数目 68 68 102 102 136 136 170
170 204 204

备注:上述表个数都是按照普通表计算的,如果开启了cdc 功能,cdc资源耗费为一张普通表。如果开启了流表,一张流表耗费的资源为2.5个普通表。

创表参数

1.吞吐量参数Z00_THROUGHPUT

低吞吐量

CREATE TABLE test1 (k int,p int,s int static,v int,PRIMARY KEY (k, p)) WITH Z00_THROUGHPUT = 'small';

中吞吐量

CREATE TABLE test2 (k int,p int,s int static,v int,PRIMARY KEY (k, p)) WITH Z00_THROUGHPUT = 'medium';

高吞吐量

CREATE TABLE test3 (k int,p int,s int static,v int,PRIMARY KEY (k, p)) WITH Z00_THROUGHPUT = 'big';

2.指定表tokens数目

表示创建表时候表的tokens数目,tokens数目必须大于1

CREATE TABLE test4 (k int,p int,s int static,v int,PRIMARY KEY (k, p)) WITH Z01_TABLE_TOKENS = 24;

3.表参数 Z00_BUFFER_SIZE 、Z00_BUFFER_NUMBER(不推荐使用)

创表时 可以指定表存储层的cf(rocksdb层)的 memtable 的buffer_size大小 和buffer_number个数

Z00_BUFFER_SIZE 为map类型,指定对应cf name 和 value值 ,value 值取值范围 2-32 M之间

Z00_BUFFER_NUMBER  为map类型, ,指定对应cf name 和 value值 取值范围2-8之间

CREATE TABLE test5 (k int,p int,s int static,v int,PRIMARY KEY (k, p)) WITH Z00_BUFFER_NUMBER = {'default': 3};
CREATE TABLE test6 (k int,p int,s int static,v int,PRIMARY KEY (k, p)) WITH Z00_BUFFER_SIZE = {'default': 16};

如果创建完的表需要调整表规格,比如达到表上限,需要将表规格调小,以创建更多的表,则可以通过如下参数调整,

将所有创建表调小为medium,则可以多建一倍数量的表
alter table keyspace.table WITH Z00_THROUGHPUT = 'medium';

将所有创建表调小为small,则可以多建两倍数量的表
alter table keyspace.table WITH Z00_THROUGHPUT = 'small';
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

热门文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。