GeminiDB Cassandra创表时需要注意什么
由于GeminiDB Cassandra存储引擎的特点,为了保证高性能需要在创表的过程中对内存进行预分配,因此GeminiDB Cassandra对表的数目有一定的上限要求。
使用须知
- 系统将节点内存的一半分配给存储引擎使用。
- 节点数量为奇数的集群容忍故障节点为N/2-1 , 偶数的集群容忍故障节点为N/2。
- GeminiDB Cassandra中的hash环为表级别,tokens参数为表所对应的数据分片数,与开源Cassandra的num_tokens有差异。
创表数目计算方式
根据实例规格不同,创表需要的内存稍有不同,以4U16GB实例为例,可以简单按照单张表768MB计算。
所以创表数目上限=集群可用总内存/单表所需内存
- 单表占用内存为768MB,表tokens个数为默认值12,如果单独设置了tokens,则需要单独计算,换算公式为(768/12)*tokens个数。
- 上述表个数都是按照普通表计算的,如果开启了流表,一张流表耗费的资源为2.5个普通表。
实例规格 |
节点个数 |
表个数 |
---|---|---|
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 |
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 |
3 |
68 |
4 |
68 |
|
5 |
102 |
|
6 |
102 |
|
7 |
136 |
|
8 |
136 |
|
9 |
170 |
|
10 |
170 |
|
11 |
204 |
|
12 |
204 |
- 单表占用内存1920MB,表tokens个数为默认值12,如果单独设置了tokens,则需要单独计算。换算公式为 (1920 / 12 )* tokens个数。
- 上述表个数都是按照普通表计算的,如果开启了流表,一张流表耗费的资源为2.5个普通表。
创表参数
- 吞吐量参数:Z00_THROUGHPUT,该参数与表的写性能上限有关,默认值为 big,即标准写性能上限。
- 低吞吐量
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';
- 低吞吐量
- 指定表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;
- 表参数:Z00_BUFFER_SIZE 、Z00_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};
- Z00_BUFFER_SIZE为map类型,指定对应cf name和value值 ,value值取值范围2~32之间。
如果创建完成的表需要调整表规格,比如达到表上限,需要将表规格调小,以创建更多的表,则可以通过如下参数调整。
- 将所有创建表调小为medium,则可以多建一倍数量的表
ALTER TABLE keyspace_name.table_name WITH Z00_THROUGHPUT = 'medium';
- 将所有创建表调小为small,则可以多建两倍数量的表
ALTER TABLE keyspace_name.table_name WITH Z00_THROUGHPUT = 'small';