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';