YugabyteDB 中 ysql_num_tablets 和 ysql_num_shards_per_tserver 标志的区别

Difference between ysql_num_tablets & ysql_num_shards_per_tserver flags in YugabyteDB

[用户在 YugabyteDB Community Slack 上发布的问题]

ysql_num_tablets G 标志是否取代了 ysql_num_shards_per_tserver G 标志? ysql_num_tablets 目前在线文档中似乎没有。

所有 gflags 在源代码中也有解释。 ysql_num_tablets 在这里解释 https://github.com/yugabyte/yugabyte-db/blob/b5aa25686b8444d171bd8d89c57342bf4e5b12a7/src/yb/client/client.cc#L220.

它为 table 或索引 cluster-wide 定义了 tablets 的“总数”。而 ysql_num_shards_per_tserver 定义了每个 yb-tserver.

的 tablets 的数量

扩展已经给出的答案,因此如果您的 ysql_num_tablets = -1(默认),则

tablets 数量 = ysql_num_shards_per_tserver * 您拥有的 tserver 数量。

但是,如果在创建 table 的 DDL 语句期间您已经指定了 tablets 的数量,那么它优先于这些参数。 下面是创建一个 table 的示例,其中包含奇数列和偶数列 - 有 5 个分片。

CREATE TABLE yuga_mannual_split ( odd int, even int ) SPLIT INTO 5 TABLETS ;

那么如果要插入数据

INSERT INTO  yuga_mannual_split  ( SELECT generate_series ( 1,20,2 ) as "odd", generate_series ( 2,20,2) as "even" ) ;