Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


DBMS_TEST系统包

📄字数 2.4K
👁️阅读量 加载中...

一、概述

DBMS_TEST 系统包是一个数据库集群内部网络测试包,用于在分布式部署环境中评估各节点之间的通信性能。它通过发送测试消息来检测节点之间的网络延迟、带宽瓶颈和通信效率,为数据库部署、运维、调优提供重要的网络质量指标支撑。

在该系统包中提供了以下接口:

包体函数名简要描述
TEST_PING_PONG1测试节点间ping时延
TEST_PING_PONG2指定数据包大小,测试节点间ping时延
TEST_MSG_SEND1测试非可信(不回执)包的发送时延
TEST_MSG_SEND2测试可信包的发送时延
TEST_RPC_SEND测试 RPC 方式发送数据的时延

典型应用场景,如:

  • 使用TEST_PING_PONG1测试节点间网络基础延迟,验证集群部署前网络质量
  • 使用TEST_PING_PONG2模拟大数据传输性能,验证大包传输是否存在延迟或丢包
  • 利用TEST_MSG_SEND1和TEST_MSG_SEND2,模拟通信模型选择,对比“可靠、非可靠”消息差异
  • 利用TEST_RPC_SEND进行 RPC 性能评估,测试远程调用方式的数据响应效率

二、TEST_PING_PONG1

2.1 功能描述

该接口用于测试节点间 ping 通的时延,并作为返回值返回

2.2 方法声明

sql
FUNCTION TEST_PING_PONG1(
    TARG_NID    INTEGER,
    PACK_NUM    INTEGER
    ) RETURN    INTEGER;

2.3 参数说明

参数名类型取值范围是否可选描述
TARG_NIDINTEGER目标节点
PACK_NUMINTEGER数据包个数

2.4 示例

sql
--向2号节点发送50000个数据包,返回总时延
SQL> exec DBMS_TEST.TEST_PING_PONG1(2,50000);

2.5 应用场景

  • 场景一:测试数据库节点间网络是否通畅,快速判断节点是否”可连通“
  • 场景二:诊断集群异常、负载不均。排查某节点延迟高、宕机或变慢的原因
  • 场景三:测试主备间同步链路延迟。主库到备库是否网络阻塞或抖动

三、TEST_PING_PONG2

3.1 功能描述

该接口同样用于测试节点间ping通的时延,并作为返回值返回。与TEST_PING_PONG1接口的区别在于:此接口可以指定数据包大小

3.2 方法声明

sql
FUNCTION TEST_PING_PONG2(
    TARG_NID    INTEGER,
    PACK_SIZE   INTEGER,
    PACK_NUM    INTEGER
    ) RETURN    INTEGER;

3.3 参数说明

参数名类型取值范围是否可选描述
TARG_NIDINTEGER目标节点
PACK_SIZEINTEGER数据包大小(单位:字节)
PACK_NUMINTEGER数据包个数

3.4 示例

sql
--向2号节点发送50000个数据包,指定数据包大小为100字节,总容量:(50000 * 100)字节,返回总时延
SQL> exec DBMS_TEST.TEST_PING_PONG2(2,100,50000);

3.5 应用场景

  • 场景一:自定义数据包大小,更贴近实际业务中的数据通信特性。通过设置如 4KB、8KB、64KB 等不同大小的数据包,可用于测试包传输过程中的抖动情况,评估网络在不同负载下的延迟表现。

四、TEST_MSG_SEND1

4.1 功能描述

该接口用于测试非可信(不回执,即不要求对方确认,不保证成功接受)包发送率,返回时间花销

4.2 方法声明

sql
FUNCTION TEST_MSG_SEND1(
    TARG_NID    INTEGER,
    PACK_SIZE   INTEGER,
    PACK_NUM    INTEGER
    ) RETURN INTEGER;

4.3 参数说明

参数名类型取值范围是否可选描述
TARG_NIDINTEGER目标节点
PACK_SIZEINTEGER数据包大小(单位:字节)
PACK_NUMINTEGER数据包个数

4.4 示例

sql
-- 向2号节点发送50000个数据包,指定大小为200字节,总容量:(50000 * 200)字节
SQL> exec DBMS_TEST.TEST_MSG_SEND1(2,200,50000);

4.5 应用场景

  • 场景一:判断集群内部是否能高速发消息,排查网络或消息通道瓶颈
  • 场景二:集群新节点上线前压力测试,确保新增节点不会因消息堆积造成网络堵塞

五、TEST_MSG_SEND2

5.1 功能描述

该接口用于测试可信包的发送率,返回时间花销。

5.2 方法声明

sql
FUNCTION TEST_MSG_SEND2(
    TARG_NID    INTEGER,
    PACK_SIZE   INTEGER,
    PACK_NUM    INTEGER
    ) RETURN    INTEGER;

5.3 参数说明

参数名类型取值范围是否可选描述
TARG_NIDINTEGER目标节点
PACK_SIZEINTEGER数据包大小(单位:字节)
PACK_NUMINTEGER数据包个数

5.4 示例

sql
-- 向2号节点发送50000个数据包,指定数据包大小为200字节,总容量:(50000 * 200)字节
SQL> exec DBMS_TEST.TEST_MSG_SEND2(2,200,50000);

5.5 应用场景

  • 场景一:验证消息链路是否可靠送达,确保数据库节点间可靠通信未出现丢包或超时
  • 场景二:用于故障节点前检测和切换判断。如某节点发送确认延迟或失败,可作为切换依据之一

六、TEST_RPC_SEND

6.1 功能描述

该接口用于测试 RPC 方式发送数据的时延,返回时间花销

6.2 方法声明

sql
FUNCTION TEST_RPC_SEND(
    TARG_NID    INTEGER,
    SEND_SIZE   INTEGER
    ) RETURN    INTEGER;

6.3 参数说明

参数名类型取值范围是否可选描述
TARG_NIDINTEGER无,目标节点
SEND_SIZEINTEGER[1,1000000]数据量(单位:KB)

提示

SEND_SIZE 不在取值范围内,不进行 RPC 时延测试,直接返回 0

6.4 示例

sql
-- 向2号节点发送50000KB的数据量
SQL> exec DBMS_TEST.TEST_RPC_SEND(2,50000);

6.5 应用场景

  • 场景一:测试集群节点间RPC调用是否畅通,确保数据库节点之间的服务调用路径响应及时,无异常延迟