GaussDB for Cassandra 创表规则介绍
由于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';
- 点赞
- 收藏
- 关注作者
评论(0)