• 沒有找到結果。

GaussDB(for Cassandra)创表时需要注意什么

6.3 数据库使用

6.3.3 GaussDB(for Cassandra)创表时需要注意什么

由于GaussDB(for Cassandra)存储使用的是RocksDB,在创建表的过程中,其实是对 底层存储RocksDB的操作。RocksDB存储引擎采用的是wal+memtable数据结构来实现 数据的写入,memtable的大小(write_buffer_size)和个数

(write_buffer_number)都需要提前配置。 其实是对集群内存的一种预分配操作,

所以GaussDB(for Cassandra)对表的数目会有一定上限要求。

使用须知

● 节点内存的一半分配给存储引擎RocksDB使用。

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

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

● 偶数数目集群

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

● 3节点4U16GB实例的可用内存=16/2*(3/2+1)=16GB 创表数目上限=16*1024MB/768MB=21

● 4节点4U16GB实例的可用内存=16/2*(4/2)=16GB 创表数目上限=16*1024MB/768MB=21

● 5节点4U16GB实例可用内存=16/2*(5/2+1)=24GB 创表数目上限=24*1024MB/768MB=32

根据上述计算方式,4U16GB规格实例的节点个数和表个数对应关系,请参见表6-1。

6-1 4U16GB 规格实例的节点数和表个数对应关系

实例规格 节点数量 表个数

4U16GB 3 21

4 21

5 32

6 32

7 42

8 42

9 53

10 53

11 64

12 64

说明

● 单表占用内存为768MB,表tokens个数为默认值12,如果单独设置了tokens,则需要单独计 算,换算公式为(768/12)*tokens个数。

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

根据上述计算方式,8U32GB规格实例的节点个数和表个数对应关系,请参见表6-2。

6-2 8U32GB 规格实例的节点个数和表个数对应关系

实例规格 节点个数 表个数

8U32GB 3 22

实例规格 节点个数 表个数

4 22

5 34

6 34

7 45

8 45

9 56

10 56

11 68

12 68

说明

● 单表占用内存为1440MB,表tokens个数为默认值12,如果单独设置了tokens,则需要单独 计算,换算公式为(1440/ 12 )* tokens个数。

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

根据上述计算方式,16U64GB规格节点个数和表个数对应关系,请参见表6-3。

6-3 16U64GB 规格节点个数和表个数对应关系

实例规格 节点个数 表个数

16U64GB 3 45

4 45

5 68

6 68

7 91

8 91

9 113

10 113

11 136

12 136

说明

● 单表占用内存1440MB,表tokens个数为默认值12,如果单独设置了tokens,则需要单独计 算,换算公式为(1440/ 12 )* tokens个数。

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

根据上述计算方式,32U128GB规格节点个数和表个数对应关系,请参见表6-4。

6-4 32U128GB 规格节点个数和表个数对应关系

实例规格 节点个数 表个数

32U128GB 3 68

4 68

● 单表占用内存1920MB,表tokens个数为默认值12,如果单独设置了tokens,则需要单独计 算。换算公式为 (1920 / 12 )* tokens个数。

● 上述表个数都是按照普通表计算的,如果开启了流表,一张流表耗费的资源为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之间。

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

– 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};

说明

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

● 将所有创建表调小为medium,则可以多建一倍数量的表

ALTER TABLE keyspace_name.table_name WITH Z00_THROUGHPUT = 'medium';

● 将所有创建表调小为small,则可以多建两倍数量的表

ALTER TABLE keyspace_name.table_name WITH Z00_THROUGHPUT = 'small';