了解PostgreSQL上Test Monitor API在四种常见测试数据场景中的查询和引入性能。

场景 说明 性能总结
多种少量(High-Mix Low-Volume) 产品种类多,步骤数量少
  • 每个请求引入100个步骤时,平均引入的步骤数为每秒636个步骤
  • 针对产品、结果和步骤的查询的平均相应时间均小于1秒
  • 针对简单数据空间的查询,启用产品编号程序名称过滤条件,平均响应时间均小于1秒
  • 数据空间查询,启用产品编号包含过滤条件,耗时30秒以上,高出超时阈值。
  • 用于2500万个步骤记录的PostgreSQL存储空间为65.1 GB,平均步骤大小为2.71 KB
少种多量(Low-Mix High-Volume) 产品少步骤多
  • 每个请求引入500个步骤时,平均引入的步骤数为每秒1082个步骤
  • 针对产品、结果和步骤的查询的平均相应时间均小于1秒
  • 针对“步骤”的查询的平均响应时间为2秒
  • 针对简单数据空间的查询,启用产品编号程序名称过滤条件,平均响应时间均小于1秒
  • 数据空间查询,启用包含元数据输入条件路径过滤条件,响应时间超过30秒,高于超时阈值
  • 用于2500万个步骤记录的PostgreSQL存储空间为46.1 GB,平均步骤大小为1.93KB
少种中量(Low-Mix Medium-Volume) 产品少结果量大
  • 每个请求引入100个步骤时,平均引入的步骤数为每秒594个步骤
  • 针对产品步骤网格的平均查询响应时间小于1秒
  • 针对结果网格的平均查询响应时间为2秒
  • 针对简单数据空间的查询,启用程序名称元数据包含过滤条件,平均响应时间均为7秒
  • 数据空间查询,启用产品编号包含输入条件产品名称元数据包含过滤条件,需30秒以上,高于超时阈值
  • 用于2500万个步骤记录的PostgreSQL存储空间为50.2 GB,平均步骤大小为2.1 KB
少种极多量(Low-Mix Very-High-Volume) 单个产品具有非常高的结果和步骤量
  • 每个请求引入500个步骤时,平均引入的步骤数为每秒1058个步骤
  • 针对产品、结果和简单步骤的查询的平均相应时间为1秒
  • 针对步骤的查询,启用步骤名称包含/等于/不为空过滤条件,平均响应时间为5秒
  • 针对简单数据空间的查询,启用产品编号程序名称过滤条件,平均响应时间均小于1秒
  • 数据空间查询,启用包含输入条件元数据过滤条件,响应时间超过30秒,高于超时阈值
  • 用于2500万个步骤记录的PostgreSQL存储空间为46 GB,平均步骤大小为1.93 KB

控制条件

NI在下列基础设施和测量条件下,针对每种场景评估了测试监视器API的性能。

  • 由Kubernetes (AWS EKS)部署和管理Test Monitor服务,规范如下。
    产品规范说明
    节点规范

    类型:r6a.4x large​

    vCPU:16

    RAM:128 GiB

    Pod规范

    CPU:250 m

    内存:320 Mi(最高512 Mi)

    Pod复制

    自动缩放默认值:2

    自动缩放最大值:10

  • Test Monitor数据库规范如下。
    数据库规范说明
    RDS PostgreSQL单实例
    产品规范

    PostgreSQL版本:14.5

    Instance类别:db.t4g.xlarge

    vCPU:4

    RAM:16 GB

  • 数据从EC2实例上传到同一AWS集群中的PostgreSQL数据库,以消除任何网络延迟。数据以产品、结果和步骤的形式上传。
  • 从Test Insights UI查询以下工作流程。
    • 产品查询根据产品编号、产品详细信息、元数据查看和筛选产品。
    • 结果查询可根据零件编号、结果详细信息和元数据查看和过滤结果。
    • 步骤查询可根据步骤名称和测量名称查看和过滤步骤。
    • 数据空间查询,用于过滤和检索可视化步骤详细信息。过滤器包括高级LINQ过滤器、结果元数据、步骤元数据和条件过滤器。

可变条件

NI在下列不同数据集条件下评估了测试监视器API的性能。

表 31. 多种少量(High-Mix Low-Volume)场景
数据集大小 5M 10M 15M 20M 25M
步骤数 500万 1000万 1500万 2000万 2500万
产品数量 250 500 750 1000 1250
每个产品的结果数 200 200 200 200 200
每个结果的步骤数 100 100 100 100 100
表 32. 少种多量(Low-Mix High-Volume)场景
数据集大小 5M 10M 15M 20M 25M
步骤数 500万 1000万 1500万 2000万 2500万
产品数量 1 2 3 4 5
每个产品的结果数 313 313 313 313 313
每个结果的步骤数 16000 16000 16000 16000 16000
表 33. 少种中量(Low-Mix Medium-Volume)场景
数据集大小 5M 10M 15M 20M 25M
步骤数 500万 1000万 1500万 2000万 2500万
产品数量 50 50 50 50 50
每个产品的结果数 1000 2000 3000 4000 5000
每个结果的步骤数 100 100 100 100 100
表 34. 少种极多量(Low-Mix Very-High-Volume)场景
数据集大小 5M 10M 15M 20M 25M
步骤数 500万 1000万 1500万 2000万 2500万
产品数量 1 1 1 1 1
每个产品的结果数 1000 1000 1000 1000 1000
每个结果的步骤数 5000 10000 15000 20000 25000

多种少量场景性能详情

在这种情况下,每个结果的步骤数和每个产品的结果数保持不变。添加更多产品可增加数据规模。

表 35. 引入操作的性能

每个请求以100个为单位批量引入步骤,不进行并行引入或查询。下表显示了以500万个为增量引入步骤数据的引入速率。

引入步骤 平均每秒引入的步数 平均每秒请求数
0至500万 744 7.4
500万至1000万 673 6.73
1000万至1500万 607 6.07
1500万至2000万 584 5.84
2000万至2500万 574 5.74
图 5. 引入性能:直方图


图 6. 引入性能:具有2 σ趋势线的累积分布图


表 36. 查询性能:平均响应时间

以下类别的查询性能为每秒10个查询。

已应用筛选条件 输入1 返回计数2 500万(秒) 1000万(秒) 1500万(秒) 2000万(秒) 2500万(秒)
产品查询
产品编号 1000 0.064 0.056 0.108 0.093 0.062
类别和名称 1000 0.071 0.059 0.058 0.061 0.06
更新时间 1000 0.069 0.062 0.103 0.076 0.069
元数据 1000 0.081 0.086 0.08 0.078 0.065
无筛选条件 1000 0.075 0.063 0.064 0.062 0.066
结果查询
测试程序 1000 0.164 0.286 0.328 0.502 0.363
产品编号 1000 0.152 0.073 0.095 0.091 0.075
状态 1000 0.169 0.129 0.136 0.145 0.135
属性 1000 0.147 0.195 0.754 0.864 0.813
关键词 1000 0.239 0.379 0.38 0.252 0.296
工作区 1000 0.112 0.149 0.145 0.131 0.326
Id 1000 0.234 0.115 0.222 0.153 0.125
无筛选条件 1000 0.185 0.276 0.591 0.444 0.268
计数查询 0 0.102 0.113 0.263 0.335 0.435
步骤查询
步骤名称 1000 0.068 0.076 0.075 0.084 0.104
测量名称 1000 0.069 0.089 0.093 0.088 0.093
测量名称和步骤名称 1000 0.086 0.079 0.078 0.083 0.093
应用预测 1000 0.08 0.086 0.069 0.095 0.074
步骤ID 1000 0.068 0.084 0.065 0.069 0.077
数据空间查询
产品编号 1000或10000 3.584 1.171 1.343 1.967 2.383
产品名称 10000 1.662 2.022 2.043 2.97 3.101
产品编号和测试程序 10000 0.974 1.099 1.462 1.591 1.42
产品名称和结果状态 10000 1.949 1.685 1.945 2.258 2.532
产品编号和结果元数据 1000 1.659 0.518 0.723 0.841 0.995
产品编号和步骤状态 10000 1.587 2.322 2.238 2.147 1.855
产品编号、测试程序和步骤名称 1000或10000 0.111 0.143 0.171 0.413 0.218
产品编号和路径 1000 0.712 0.48 0.719 1.131 1.011
输入条件 1000 0.539 0.764 1.238 1.957 1.721
产品编号(路径API) 1000 2.604 7.255 11.738 超时 超时
产品编号和程序名称(路径API) 1000 0.105 0.147 0.219 0.141 0.13
产品编号包含 10000 17.772 超时 超时 超时 超时

1表示查询请求正文中的take参数,用于限制获取的记录数量。

2表示查询请求正文中的returnCount参数,如果为真,则获取符合应用的筛选条件的记录总数。

注:

6.7%的数据空间查询(使用产品编号包含过滤器)返回了503错误,且数据大小增加。这些错误表示测试监视器服务的资源有限。

图 7. 数据空间查询直方图


少种多量场景:性能详情

在这种情况下,每个结果的步骤数和每个产品的结果数保持不变。添加更多产品可增加数据规模。

表 37. 引入操作的性能

由于每个结果包含16000个步骤,因此每个请求以500个为单位分批引入步骤,而无需并行引入或查询。下表显示了以500万个为增量引入步骤数据的引入速率。

引入步骤 平均每秒引入的步数 平均每秒请求数
0至500万 1182 2.36
500万至1000万 1138 2.28
1000万至1500万 1085 2.17
1500万至2000万 1017 2.03
2000万至2500万 990 1.98
图 8. 引入性能:直方图


图 9. 引入性能:具有2 σ趋势线的累积分布图


表 38. 查询性能:平均响应时间

以下类别的查询性能为每秒10个查询。

已应用筛选条件 输入1 返回计数2 500万(秒) 1000万(秒) 1500万(秒) 2000万(秒) 2500万(秒)
产品查询
产品编号 1000 0.088 0.084 0.066 0.088 0.056
类别和名称 1000 0.096 0.088 0.063 0.073 0.059
更新时间 1000 0.079 0.083 0.084 0.063 0.058
元数据 1000 0.072 0.058 0.087 0.064 0.088
无筛选条件 1000 0.082 0.059 0.063 0.099 0.064
结果查询
测试程序 1000 0.086 0.08 0.094 0.093 0.092
产品编号 1000 0.122 0.09 0.172 0.102 0.1
状态 1000 0.143 0.092 0.123 0.105 0.105
属性 1000 0.089 0.109 0.074 0.073 0.066
关键词 1000 0.083 0.109 0.077 0.069 0.075
工作区 1000 0.085 0.081 0.101 0.103 0.089
Id 1000 0.15 0.1 0.12 0.11 0.129
无筛选条件 1000 0.08 0.113 0.15 0.126 0.127
计数查询 0 0.082 0.082 0.077 0.075 0.065
步骤查询
步骤名称 1000 0.205 0.89 3.922 4.107 4.772
测量名称 1000 0.292 1.647 3.474 4.792 5.934
测量名称和步骤名称 1000 0.17 0.749 3.42 2.742 4.565
应用预测 1000 0.106 0.099 0.09 0.085 0.105
步骤ID 1000 0.107 0.079 0.104 0.092 0.096
数据空间查询
产品编号 1000或10000 1.15 1.381 1.073 1.172 1.086
产品名称 10000 1.475 2.299 1.442 1.473 1.447
产品编号和测试程序 10000 1.698 2.059 1.48 1.448 1.749
产品名称和结果状态 10000 1.648 1.558 1.557 1.566 2.386
产品编号和结果元数据 1000 0.594 0.843 2.065 1.008 2.492
产品编号和步骤状态 10000 1.612 1.536 1.486 2.243 1.583
产品编号、测试程序和步骤名称 1000或10000 1.344 6.632 6.863 15.797 14.59
产品编号和路径 1000 0.273 2.648 1.217 0.32 1.095
输入条件 1000 0.259 0.28 0.252 0.306 0.285
产品编号(路径API) 1000 0.255 0.755 0.984 1.336 2.825
产品编号和程序名称(路径API) 1000 0.117 0.2 0.196 0.24 0.157
输入条件值 - 等于 1000 17.45 超时 超时 超时 超时
程序名称 - 包含 1000或10000 2.281 超时 超时 超时 超时
结果元数据 - 包含 1000 2.355 超时 超时 超时 超时

1表示查询请求正文中的take参数,用于限制获取的记录数量。

2表示查询请求正文中的returnCount参数,如果为真,则获取符合应用的筛选条件的记录总数。

注:

8.7%的数据空间查询(使用程序名称包含结果元数据包含输入条件值等于筛选条件)会返回503错误,表示Test Monitor服务存在资源限制。

图 10. 数据空间查询直方图


少种中量场景:性能详情

在这种情况下,每个结果的步骤数和产品数保持不变。通过在现有产品下添加新结果可增加数据规模。

表 39. 引入操作的性能

由于每个结果包含100个步骤,因此每个请求以100个为单位分批引入步骤,而无需并行引入或查询。下表显示了以500万个为增量引入步骤数据的引入速率。

引入步骤 平均每秒引入的步数 平均每秒请求数
0至500万 727 7.27
500万至1000万 590 5.9
1000万至1500万 572 5.72
1500万至2000万 541 5.41
2000万至2500万 539 5.39
图 11. 引入性能:直方图


图 12. 引入性能:具有2 σ趋势线的累积分布图


表 40. 查询性能:平均响应时间

以下类别的查询性能为每秒10个查询。

已应用筛选条件 输入1 返回计数2 500万(秒) 1000万(秒) 1500万(秒) 2000万(秒) 2500万(秒)
产品查询
产品编号 1000 0.081 0.064 0.077 0.072 0.104
类别和名称 1000 0.061 0.067 0.092 0.073 0.08
更新时间 1000 0.061 0.079 0.085 0.066 0.081
元数据 1000 0.061 0.078 0.122 0.091 0.094
无筛选条件 1000 0.065 0.067 0.058 0.095 0.055
结果查询
测试程序 1000 0.2 0.541 1.811 1.482 1.878
产品编号 1000 0.149 0.214 0.496 0.197 0.33
状态 1000 0.146 0.273 0.206 0.268 0.483
属性 1000 0.201 0.807 2.048 0.942 1.83
关键词 1000 0.317 1.827 2.717 3.473 3.473
工作区 1000 0.148 0.39 1.706 0.633 0.917
Id 1000 0.135 0.152 0.371 0.227 0.166
无筛选条件 1000 0.259 0.662 1.741 1.323 1.269
计数查询 0 0.131 0.315 2.001 0.869 2.574
步骤查询
步骤名称 1000 0.071 0.135 0.171 0.103 0.183
测量名称 1000 0.071 0.111 0.194 0.106 0.171
测量名称和步骤名称 1000 0.069 0.113 0.289 0.122 0.217
应用预测 1000 0.077 0.103 0.129 0.102 0.102
步骤ID 1000 0.081 0.085 0.149 0.102 0.133
数据空间查询
产品编号和测试程序 10000 0.427 1.124 2.571 1.035 3.897
产品编号和结果元数据 1000 0.209 0.407 1.952 0.784 1.896
产品编号、测试程序和步骤名称 1000或10000 0.186 0.401 2.945 1.14 2.093
产品编号和路径 1000 0.784 4.956 7.993 5.836 8.107
产品编号(路径API) 1000 10.452 20.032 超时 19.767 16.725
产品编号和程序名称(路径API) 1000 0.196 0.377 0.848 0.284 0.275
产品编号(等于和包含) 1000或10000 9.1 超时 超时 超时 超时
输入条件 1000 超时 超时 超时 超时 超时
产品名称 10000 4.594 超时 超时 超时 超时
结果元数据 1000 6.167 超时 超时 超时 超时

1表示查询请求正文中的take参数,用于限制获取的记录数量。

2表示查询请求正文中的returnCount参数,如果为真,则获取符合应用的筛选条件的记录总数。

注: 39%的数据空间查询(使用包含(Contains)产品名称等于(Product name equals)结果元数据(Result metadata)输入条件(Input condition)等过滤器)返回了503错误。这些错误表示测试监视器服务的资源有限。
图 13. 数据空间查询直方图


少种极多量场景:性能详情

在这种情况下,产品数量和每个产品的结果数保持不变。通过在现有结果下添加新步骤可增加数据规模。

表 41. 引入操作的性能

由于每个试验包含500多个步骤,因此每个请求以500个为单位分批引入步骤,而无需并行引入或查询。下表显示了以500万个为增量引入步骤数据的引入速率。

引入步骤 平均每秒引入的步数 平均每秒请求数
0至500万 1184 2.37
500万至1000万 1101 2.2
1000万至1500万 1052 2.1
1500万至2000万 999 2
2000万至2500万 953 1.91
图 14. 引入性能:直方图


图 15. 引入性能:具有2 σ趋势线的累积分布图


表 42. 查询性能:平均响应时间

以下类别的查询性能为每秒10个查询。

已应用筛选条件 输入1 返回计数2 500万(秒) 1000万(秒) 1500万(秒) 2000万(秒) 2500万(秒)
产品查询
产品编号 1000 0.076 0.079 0.063 0.087 0.052
类别和名称 1000 0.065 0.053 0.06 0.057 0.058
更新时间 1000 0.083 0.06 0.064 0.059 0.058
元数据 1000 0.072 0.057 0.072 0.055 0.079
无筛选条件 1000 0.071 0.052 0.058 0.059 0.056
结果查询
测试程序 1000 0.133 0.082 0.085 0.091 0.097
产品编号 1000 0.129 0.127 0.131 0.129 0.126
状态 1000 0.113 0.098 0.116 0.094 0.092
属性 1000 0.07 0.107 0.073 0.075 0.063
关键词 1000 0.073 0.079 0.075 0.063 0.069
工作区 1000 0.098 0.133 0.103 0.085 0.09
Id 1000 0.099 0.107 0.139 0.203 0.099
无筛选条件 1000 0.131 0.137 0.107 0.126 0.144
计数查询 0 0.075 0.070 0.071 0.057 0.056
步骤查询
步骤名称 1000 0.082 1.287 2.778 5.129 5.891
测量名称 1000 0.132 2.053 1.989 5.382 3.71
测量名称和步骤名称 1000 0.142 1.277 3.927 4.681 7.07
应用预测 1000 0.08 0.119 0.079 0.092 0.082
步骤ID 1000 0.08 0.092 0.093 0.09 0.108
数据空间查询
产品编号 1000或10000 1.039 1.038 1.01 1.084 1.132
产品名称 10000 1.452 1.422 1.403 1.472 1.816
产品编号和测试程序 10000 1.465 1.478 1.48 1.528 1.44
产品名称和结果状态 10000 1.566 1.474 1.437 1.503 1.488
产品编号和结果元数据 1000 0.623 0.606 1.074 1.609 0.343
产品编号和步骤状态 10000 1.503 1.442 1.498 1.527 1.9
产品编号、测试程序和步骤名称 1000或10000 1.412 9.546 2.031 3.761 5.345
产品编号和路径 1000 0.245 0.344 0.569 0.336 0.467
输入条件 1000 0.241 0.226 0.234 0.232 0.223
产品编号(路径API) 1000 0.235 0.422 0.482 0.748 0.431
产品编号和程序名称(路径API) 1000 0.099 0.227 0.167 0.145 0.217
输入条件值 - 等于 1000 14.024 超时 超时 超时 超时
程序名称 - 包含 10000 2.498 超时 超时 超时 超时
结果元数据 - 包含 1000 1.575 超时 超时 超时 超时

1表示查询请求正文中的take参数,用于限制获取的记录数量。

2表示查询请求正文中的returnCount参数,如果为真,则获取符合应用的筛选条件的记录总数。

注: 5.7%的数据空间查询(使用程序名称包含(Program name contains)结果元数据(Result metadata)等过滤器)返回503错误。这些错误表示测试监视器服务的资源有限。
图 16. 数据空间查询直方图