onstat -g shard 命令:打印有关分片高速缓存的信息

可以使用 onstat -g shard 命令显示有关分片高速缓存的信息。

语法:

示例 1:使用基于散列分片的分片定义的输出

对于本示例,使用以下命令创建一个分片定义:
cdr define shardCollection collection_1 database_1:josh.customers_1
          --type=delete --key=column_2 --strategy=hash --versionCol=column_3
          g_shard_server_A
          g_shard_server_B
          g_shard_server_C
          g_shard_server_D

以下示例显示了当 onstat -g shard 命令在 g_shard_server_Ag_shard_server_Bg_shard_server_Cg_shard_server_D 上运行的输出。

图: 使用哈希算法将数据分布到多个数据库服务器的分片定义的 onstat -g shard 命令的输出。

GBase 8s Database Server Version 8.5 -- On-Line -- Up 00:00:20 -- 162316 Kbytes
          collection_1 database_1:josh.customers_1 key:column_2 HASH:DELETE SHARD OPTIMIZATION:ENABLED
          Matching for delete:column_3
          g_shard_server_A (65545) mod(ifx_checksum(column_2::LVARCHAR, 0), 4) = 0
          g_shard_server_B (65546) mod(ifx_checksum(column_2::LVARCHAR, 0), 4) in (1, -1)
          g_shard_server_C (65547) mod(ifx_checksum(column_2::LVARCHAR, 0), 4) in (2, -2)
          g_shard_server_D (65548) mod(ifx_checksum(column_2::LVARCHAR, 0), 4) in (3, -3)

示例 1 的输出描述

Sharding definition name
分片定义的名称。在此示例中该值为 collection_1
Database name
包含分布在多个分片的集合或表的数据库的名称。在此示例中该值为 database_1
Table owner name
分布在多个分片的集合或表的所有者名称。在此示例中该值为 josh
Table name
分布在多个分片的集合或表的名称。在此示例中该值为 customers_1
Shard key
分片键用于分配行或文档。值可以是表的一个列、文档字段或一个表达式。在此示例中该值为 column_2
Sharding strategy
确定新行或文档存储在哪个数据库服务器的方法。值可以是 HASH (哈希算法)或 EXPRESSION(表达式)。在此示例中该值为 HASH
Sharding type
在行或文档复制到目标服务器后指定源服务器的动作。值可以是 DELETE 、KEEP 或 INFORMATIONAL 。 在此示例中该值为 DELETE
Shard optimization
指定查询是否可以跳过不包含相关数据的分片服务器。值可以是 ENABLED 或 NOT ENABLED 。在此示例中该值为 ENABLED
Version column
指定 Enterprise Replication 尝试验证源行或源文件没有被更新时使用的列或键。值可以是一列或文档字段。 在此示例中该值为 column_3
Sharding rule
复制数据到指定的数据库服务器的规则。在上一示例中,g_shard_server_A (服务器编号 65545)基于该规则来发送数据:
mod(ifx_checksum(col2::LVARCHAR,0),4)=0

示例 2:使用基于分片表达式的分片定义的输出

对于本示例,使用以下命令创建一个分片定义:
cdr define shardCollection collection_2 database_2:john.customers_2
          --type=keep --key=state --strategy=expression --versionCol=version_column
          g_shard_server_F "IN ('AL','MS','GA')"
          g_shard_server_G "IN ('TX','OK','NM')"
          g_shard_server_H "IN ('NY','NJ')"
          g_shard_server_I REMAINDER

以下示例显示了运行在 g_shard_server_Fg_shard_server_Gg_shard_server_Hg_shard_server_I 上的 onstat -g shard 命令的输出。

图: 使用一个表达式将数据分布到多个数据库服务器的分片定义的 onstat -g shard 命令的输出。

GBase 8s Database Server Version 8.5.U -- On-Line -- Up 00:19:07 -- 162316 Kbytes
          collection_2 database_2:john.customers_2 key:state EXPRESSION:KEEP SHARD OPTIMIZATION:ENABLED
          Matching for delete:version_column
          g_shard_server_F (65564) state IN ('AL','MS','GA')
          g_shard_server_G (65565) state IN ('TX','OK','NM')
          g_shard_server_H (65566) state IN ('NY','NJ')
          g_shard_server_I (65567) not ((state IN ('AL','MS','GA')) or (state IN('TX','OK','NM'))
          or (state IN ('NY','NJ')))

示例 2 的输出描述

Sharding definition name
分片定义的名称。在此示例中该值为 collection_2
Database name
包含分布在多个分片的集合和表的数据库的名称。在此示例中该值为 database_2
Table owner name
分布在多个分片的集合或表的所有者名称。在此示例中该值为 john
Table name
分布在多个分片的集合或表的名称。在此示例中该值为 customers_2
Shard key
分片键用于分配行或文档。值可以是表的一个列、文档字段或一个表达式。在此示例中该值为 state
Sharding strategy
确定新行或文档存储在哪个数据库服务器的方法。值可以是 HASH (哈希算法)或 EXPRESSION(表达式)。在此示例中该值为 EXPRESSION
Sharding type
在行或文档复制到目标服务器后指定源服务器的动作。值可以是 DELETE 、KEEP 或 INFORMATIONAL 。 在此示例中该值为 KEEP
Shard optimization
指定查询是否可以跳过不包含相关数据的分片服务器。值可以是 ENABLED 或 NOT ENABLED 。在此示例中该值为 ENABLED
Version column
指定 Enterprise Replication 尝试验证源行或源文件没有被更新时使用的列或键。值可以是一列或文档字段。 在此示例中该值为 version_column
Sharding rule
复制数据到指定的分片的规则。在本示例中 g_shard_server_F(服务器编号为 65564 )基于该规则接收数据:
state in ('AL','MS','GA')
g_shard_server_I(服务器编号为 65567) 基于该规则接收数据:
not ((state in ('AL','MS','GA'))
                or (state in ('TX','OK','NM'))
                or (state in ('NY','NJ')))

示例 3:使用 BSON 分片键和基于分片表达式的分片定义的输出

对于本示例,使用以下命令创建一个分片定义:
cdr define shardCollection collection_3 database_3:susan.customers_3
          -t delete -k bson_value_lvarchar(data,'age') -s expression -v version
          g_shard_server_J "BETWEEN 0 and 20"
          g_shard_server_K "BETWEEN 21 and 62"
          g_shard_server_L "BETWEEN 63 and 100"
          g_shard_server_M  REMAINDER

以下示例显示运行在 shard_server_Jshard_server_Kshard_server_Lshard_server_M 上的 onstat -g shard 命令的输出。

图: 使用 BSON 分片键和表达式将数据分布到多个数据库服务器的分片定义的 onstat -g shard 的命令的输出。

GBase 8s Database Server Version 8.5 -- On-Line -- Up 01:34:01 -- 354721 Kbytes
          collection_3 database_3:susan.customers_3 key:bson_value_lvarchar(data,'age')
          EXPRESSION:DELETE SHARD OPTIMIZATION:ENABLED
          Matching for delete:version
          g_shard_server_J (65568) bson_value_lvarchar(data,'age') BETWEEN 0 and 20"
          g_shard_server_K (65569) bson_value_lvarchar(data,'age') BETWEEN 21 and 62"
          g_shard_server_L (65570) bson_value_lvarchar(data,'age')BETWEEN 63 and 100"
          g_shard_server_M (65571) not((bson_value_lvarchar(data,'age') BETWEEN 0 and 20)
          or (bson_value_lvarchar(data,'age') BETWEEN 21 and 62) or (bson_value_lvarchar
          (data,'age') BETWEEN 63 and 100)) 

示例 3 的输出描述

Sharding definition name
分片定义的名称。在此示例中的该值为 collection_3
Database name
包含分布在多个分片的集合或表的数据库的名称。在此示例中该值为 database_3
Table owner name
分布在多个分片的集合或表的所有者名称。在此示例中该值为 susan
Table name
分布在多个分片的集合或表的名称。在此示例中该值为 customers_3
Shard key
分片键用于分配行或文档。值可以是表的一个列、文档字段或一个表达式。在此示例中该值为查询 BSON age 键作为该分片键的表达式 bson_value_lvarchar(data,'age')
Sharding strategy
确定新行或文档存储在哪个数据库服务器的方法。值可以是 HASH (哈希算法)或 EXPRESSION(表达式)。在此示例中该值为 EXPRESSION
Sharding type
在行或文档复制到目标服务器后指定源服务器的动作。值可以是 DELETE 、KEEP 或 INFORMATIONAL 。 在此示例中该值为 DELETE
Shard optimization
指定查询是否可以跳过不包含相关数据的分片服务器。值可以是 ENABLED 或 NOT ENABLED 。在此示例中该值为 ENABLED
Version column
指定 Enterprise Replication 尝试验证源行或源文件没有被更新时使用的列或键。值可以是一列或文档字段。 在此示例中该值为 version
Sharding rule
复制数据到指定的分片的规则。在本示例中 g_shard_server_J(服务器编号为 65568)基于该规则接收数据:
bson_value_lvarchar(data,'age') BETWEEN 0 and 20
g_shard_server_M(服务器编号为 65571) 基于该规则接收数据:
not((bson_value_lvarchar(data,'age') BETWEEN 0 and 20)
                or (bson_value_lvarchar(data,'age') BETWEEN 21 and 62)
                or (bson_value_lvarchar(data,'age') BETWEEN 63 and 100))