GaussDB for Cassandra 创表规则介绍

举报
cassandra_developer 发表于 2020/07/06 20:56:23 2020/07/06
【摘要】 由于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

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

全部回复

上滑加载中

设置昵称

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

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

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

举报
请填写举报理由
0/200