凯发k8国际娱乐官网入口-k8凯发> 云数据库 geminidb> > > > geminidb cassandra创表时需要注意什么
更新时间:2023-11-21 gmt 08:00

geminidb cassandra创表时需要注意什么-凯发k8国际娱乐官网入口

由于geminidb cassandra存储引擎的特点,为了保证高性能需要在创表的过程中对内存进行预分配,因此geminidb cassandra对表的数目有一定的上限要求。

使用须知

  • 系统将节点内存的一半分配给存储引擎使用。
  • 节点数量为奇数的集群容忍故障节点为n/2-1 , 偶数的集群容忍故障节点为n/2。

创表数目计算方式

根据实例规格不同,创表需要的内存稍有不同,以4u16gb实例为例,可以简单按照单张表768mb计算。

所以创表数目上限=集群可用总内存/单表所需内存

  • 奇数数目集群

    集群可用内存=节点内存/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规格实例的节点个数和表个数对应关系,请参见表1
表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规格实例的节点个数和表个数对应关系,请参见表2
表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规格节点个数和表个数对应关系,请参见表3
表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规格节点个数和表个数对应关系,请参见表4
表4 32u128gb规格节点个数和表个数对应关系

实例规格

节点个数

表个数

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个普通表。

创表参数

  1. 吞吐量参数: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';
  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(不推荐使用)。

    创表时可以指定存储层memtable的大小和个数。

    • 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';
分享:
网站地图