PostgreSQLでのテストモニタAPIのパフォーマンス
- 更新日2025-12-02
- 31分で読める
4つの一般的なテストデータシナリオに沿って、PostgreSQL上のテストモニタAPIのクエリとインジェストのパフォーマンスについて説明します。
| シナリオ | 説明 | パフォーマンスの概要 |
|---|---|---|
| 種類が多く、量が少ない | 製品数は多い。ステップ数は少ない。 |
|
| 種類が少なく、量が多い | 製品数は少ない。ステップ数は多い。 |
|
| 種類が少なく、量は中程度 | 製品数は少ない。結果数は多い。 |
|
| 種類が少なく、量が大量 | 1つの製品で結果とステップが大量にある |
|
前提条件
NIは、以下のインフラストラクチャと測定条件の下で、各シナリオに対してテストモニタAPIのパフォーマンスを評価しました。
- テストモニタサービスは、以下の仕様のKubernetes (AWS EKS) によってデプロイして管理しました。
仕様 説明 ノード仕様 タイプ: r6a.4x large
vCPU: 16
RAM: 128 GiB
Pod仕様 CPU: 250 m
メモリ: 320 Mi (最大512 Mi)
Pod複製 自動スケールデフォルト: 2
自動スケール最大: 10
- テストモニタデータベースの仕様は、次のとおりです。
データベース仕様 説明 ソース RDS PostgreSQLのインスタンス 1つ 仕様 PostgreSQLバージョン: 14.5
インスタンスクラス: db.t4g.xlarge
vCPU: 4
RAM: 16 GB
- ネットワーク遅延を排除するために、データは EC2 インスタンスから同じAWSクラスタ内のPostgreSQLデータベースにアップロードしました。データは製品、結果、ステップとしてアップロードしました。
- テストインサイトUIから以下のワークフローのクエリを実行しました。
- 製品番号、製品の詳細、およびメタデータに基づいて製品を表示およびフィルタリングする製品グリッドクエリ
- 製品番号、結果の詳細、およびメタデータに基づいて結果を表示およびフィルタリングする結果グリッドクエリ
- ステップ名と測定名に基づいてステップを表示およびフィルタリングするステップグリッドクエリ
- 視覚化のためにステップの詳細をフィルタ処理して取得するデータスペースクエリ。フィルタには、上級LINQフィルタ、結果メタデータ、ステップメタデータ、条件フィルタを含めることができます。
実験条件
NIでは、以下のようなデータセット条件でテストモニタAPIのパフォーマンスを評価しました。
| データセットのサイズ | 5M | 10M | 15M | 20M | 25M |
|---|---|---|---|---|---|
| ステップ数 | 500万 | 1,000万 | 1,500万 | 2,000万 | 2,500万 |
| 製品数 | 250 | 500 | 750 | 1000 | 1250 |
| 製品あたりの結果数 | 200 | 200 | 200 | 200 | 200 |
| 結果あたりのステップ数 | 100 | 100 | 100 | 100 | 100 |
| データセットのサイズ | 5M | 10M | 15M | 20M | 25M |
|---|---|---|---|---|---|
| ステップ数 | 500万 | 1,000万 | 1,500万 | 2,000万 | 2,500万 |
| 製品数 | 1 | 2 | 3 | 4 | 5 |
| 製品あたりの結果数 | 313 | 313 | 313 | 313 | 313 |
| 結果あたりのステップ数 | 16000 | 16000 | 16000 | 16000 | 16000 |
| データセットのサイズ | 5M | 10M | 15M | 20M | 25M |
|---|---|---|---|---|---|
| ステップ数 | 500万 | 1,000万 | 1,500万 | 2,000万 | 2,500万 |
| 製品数 | 50 | 50 | 50 | 50 | 50 |
| 製品あたりの結果数 | 1000 | 2000 | 3000 | 4000 | 5000 |
| 結果あたりのステップ数 | 100 | 100 | 100 | 100 | 100 |
| データセットのサイズ | 5M | 10M | 15M | 20M | 25M |
|---|---|---|---|---|---|
| ステップ数 | 500万 | 1,000万 | 1,500万 | 2,000万 | 2,500万 |
| 製品数 | 1 | 1 | 1 | 1 | 1 |
| 製品あたりの結果数 | 1000 | 1000 | 1000 | 1000 | 1000 |
| 結果あたりのステップ数 | 5000 | 10000 | 15000 | 20000 | 25000 |
種類が多く、量が少ないシナリオのパフォーマンスの詳細
このシナリオでは、結果あたりのステップ数と製品あたりの結果数は一定です。データスケールは、製品を追加することで増加します。
| インジェスト ステップ | 1秒あたりにインジェストされた平均ステップ数 | 1秒あたりの平均リクエスト数 |
|---|---|---|
| 0~500万 | 744 | 7.4 |
| 500万~1,000万 | 673 | 6.73 |
| 1,000万~1,500万 | 607 | 6.07 |
| 1,500万~2,000万 | 584 | 5.84 |
| 2,000万~2,500万 | 574 | 5.74 |


| 適用したフィルタ | Take1 | Return count2 | 5M (秒) | 10M (秒) | 15M (秒) | 20M (秒) | 25M (秒) |
|---|---|---|---|---|---|---|---|
| 製品グリッドクエリ | |||||||
| Part number | 1000 | False | 0.064 | 0.056 | 0.108 | 0.093 | 0.062 |
| Family and Name | 1000 | False | 0.071 | 0.059 | 0.058 | 0.061 | 0.06 |
| Updated time | 1000 | False | 0.069 | 0.062 | 0.103 | 0.076 | 0.069 |
| Metadata | 1000 | False | 0.081 | 0.086 | 0.08 | 0.078 | 0.065 |
| フィルタなし | 1000 | False | 0.075 | 0.063 | 0.064 | 0.062 | 0.066 |
| 結果グリッドクエリ | |||||||
| Test program | 1000 | False | 0.164 | 0.286 | 0.328 | 0.502 | 0.363 |
| Part number | 1000 | False | 0.152 | 0.073 | 0.095 | 0.091 | 0.075 |
| Status | 1000 | False | 0.169 | 0.129 | 0.136 | 0.145 | 0.135 |
| Property | 1000 | False | 0.147 | 0.195 | 0.754 | 0.864 | 0.813 |
| Keyword | 1000 | False | 0.239 | 0.379 | 0.38 | 0.252 | 0.296 |
| Workspace | 1000 | False | 0.112 | 0.149 | 0.145 | 0.131 | 0.326 |
| ID | 1000 | False | 0.234 | 0.115 | 0.222 | 0.153 | 0.125 |
| フィルタなし | 1000 | False | 0.185 | 0.276 | 0.591 | 0.444 | 0.268 |
| Count queries | 0 | True | 0.102 | 0.113 | 0.263 | 0.335 | 0.435 |
| ステップグリッドクエリ | |||||||
| Step name | 1000 | True | 0.068 | 0.076 | 0.075 | 0.084 | 0.104 |
| Measurement Name | 1000 | True | 0.069 | 0.089 | 0.093 | 0.088 | 0.093 |
| Measurement name and Step name | 1000 | True | 0.086 | 0.079 | 0.078 | 0.083 | 0.093 |
| Applying projections | 1000 | True | 0.08 | 0.086 | 0.069 | 0.095 | 0.074 |
| Step id | 1000 | True | 0.068 | 0.084 | 0.065 | 0.069 | 0.077 |
| データスペース クエリ | |||||||
| Part number | 1000または10000 | False | 3.584 | 1.171 | 1.343 | 1.967 | 2.383 |
| Product name | 10000 | False | 1.662 | 2.022 | 2.043 | 2.97 | 3.101 |
| Part number and Test program | 10000 | False | 0.974 | 1.099 | 1.462 | 1.591 | 1.42 |
| Product name and Result status | 10000 | False | 1.949 | 1.685 | 1.945 | 2.258 | 2.532 |
| Part number and Result metadata | 1000 | False | 1.659 | 0.518 | 0.723 | 0.841 | 0.995 |
| Part number and Step status | 10000 | False | 1.587 | 2.322 | 2.238 | 2.147 | 1.855 |
| Part number, Test program and Step name | 1000または10000 | False | 0.111 | 0.143 | 0.171 | 0.413 | 0.218 |
| Part number and Paths | 1000 | False | 0.712 | 0.48 | 0.719 | 1.131 | 1.011 |
| Input conditions | 1000 | False | 0.539 | 0.764 | 1.238 | 1.957 | 1.721 |
| Part number (Path API) | 1000 | False | 2.604 | 7.255 | 11.738 | タイムアウト | タイムアウト |
| Part number and Program name (Path API) | 1000 | False | 0.105 | 0.147 | 0.219 | 0.141 | 0.13 |
| Part number contains | 10000 | False | 17.772 | タイムアウト | タイムアウト | タイムアウト | タイムアウト |
|
1クエリ要求の本体部分の takeパラメーターを表します。フェッチするレコード数はこの数までに制限されます。 2クエリ要求の本体部分の returnCountパラメータを表します。Trueの場合、適用したフィルタに一致するレコードの合計カウントがフェッチされます。 メモ
Part number containsフィルタを指定したデータスペースクエリの6.7%で、データサイズが増えるにつれて「エラー503」が返されました。これは、テストモニタサービスに必要なリソースが不足したことを示しています。 |
|||||||

種類が少なく、量が多いシナリオのパフォーマンスの詳細
このシナリオでは、結果あたりのステップ数と製品あたりの結果数は一定です。データスケールは、製品を追加することで増加します。
| インジェスト ステップ | 1秒あたりにインジェストされた平均ステップ数 | 1秒あたりの平均リクエスト数 |
|---|---|---|
| 0~500万 | 1182 | 2.36 |
| 500万~1,000万 | 1138 | 2.28 |
| 1,000万~1,500万 | 1085 | 2.17 |
| 1,500万~2,000万 | 1017 | 2.03 |
| 2,000万~2,500万 | 990 | 1.98 |


| 適用したフィルタ | Take1 | Return count2 | 5M (秒) | 10M (秒) | 15M (秒) | 20M (秒) | 25M (秒) |
|---|---|---|---|---|---|---|---|
| 製品グリッドクエリ | |||||||
| Part number | 1000 | False | 0.088 | 0.084 | 0.066 | 0.088 | 0.056 |
| Family and Name | 1000 | False | 0.096 | 0.088 | 0.063 | 0.073 | 0.059 |
| Updated time | 1000 | False | 0.079 | 0.083 | 0.084 | 0.063 | 0.058 |
| Metadata | 1000 | False | 0.072 | 0.058 | 0.087 | 0.064 | 0.088 |
| フィルタなし | 1000 | False | 0.082 | 0.059 | 0.063 | 0.099 | 0.064 |
| 結果グリッドクエリ | |||||||
| Test program | 1000 | False | 0.086 | 0.08 | 0.094 | 0.093 | 0.092 |
| Part number | 1000 | False | 0.122 | 0.09 | 0.172 | 0.102 | 0.1 |
| Status | 1000 | False | 0.143 | 0.092 | 0.123 | 0.105 | 0.105 |
| Property | 1000 | False | 0.089 | 0.109 | 0.074 | 0.073 | 0.066 |
| Keyword | 1000 | False | 0.083 | 0.109 | 0.077 | 0.069 | 0.075 |
| Workspace | 1000 | False | 0.085 | 0.081 | 0.101 | 0.103 | 0.089 |
| ID | 1000 | False | 0.15 | 0.1 | 0.12 | 0.11 | 0.129 |
| フィルタなし | 1000 | False | 0.08 | 0.113 | 0.15 | 0.126 | 0.127 |
| Count query | 0 | True | 0.082 | 0.082 | 0.077 | 0.075 | 0.065 |
| ステップグリッドクエリ | |||||||
| Step name | 1000 | True | 0.205 | 0.89 | 3.922 | 4.107 | 4.772 |
| Measurement Name | 1000 | True | 0.292 | 1.647 | 3.474 | 4.792 | 5.934 |
| Measurement name and Step name | 1000 | True | 0.17 | 0.749 | 3.42 | 2.742 | 4.565 |
| Applying projections | 1000 | True | 0.106 | 0.099 | 0.09 | 0.085 | 0.105 |
| Step id | 1000 | True | 0.107 | 0.079 | 0.104 | 0.092 | 0.096 |
| データスペース クエリ | |||||||
| Part number | 1000または10000 | False | 1.15 | 1.381 | 1.073 | 1.172 | 1.086 |
| Product name | 10000 | False | 1.475 | 2.299 | 1.442 | 1.473 | 1.447 |
| Part number and Test program | 10000 | False | 1.698 | 2.059 | 1.48 | 1.448 | 1.749 |
| Product name and Result status | 10000 | False | 1.648 | 1.558 | 1.557 | 1.566 | 2.386 |
| Part number and Result metadata | 1000 | False | 0.594 | 0.843 | 2.065 | 1.008 | 2.492 |
| Part number and Step status | 10000 | False | 1.612 | 1.536 | 1.486 | 2.243 | 1.583 |
| Part number, Test program and Step name | 1000または10000 | False | 1.344 | 6.632 | 6.863 | 15.797 | 14.59 |
| Part number and Paths | 1000 | False | 0.273 | 2.648 | 1.217 | 0.32 | 1.095 |
| Input conditions | 1000 | False | 0.259 | 0.28 | 0.252 | 0.306 | 0.285 |
| Part number (Path API) | 1000 | False | 0.255 | 0.755 | 0.984 | 1.336 | 2.825 |
| Part number and Program name (Path API) | 1000 | False | 0.117 | 0.2 | 0.196 | 0.24 | 0.157 |
| Input condition value - equals | 1000 | False | 17.45 | タイムアウト | タイムアウト | タイムアウト | タイムアウト |
| Program name - Contains | 1000または10000 | False | 2.281 | タイムアウト | タイムアウト | タイムアウト | タイムアウト |
| Result metadata - Contains | 1000 | False | 2.355 | タイムアウト | タイムアウト | タイムアウト | タイムアウト |
|
1クエリ要求の本体部分の takeパラメーターを表します。フェッチするレコード数はこの数までに制限されます。 2クエリ要求の本体部分の returnCountパラメータを表します。Trueの場合、適用したフィルタに一致するレコードの合計カウントがフェッチされます。 メモ
Program name contains、Result metadata contains、Input condition value equalsなどをフィルタで指定するデータスペースクエリの 8.7% で「エラー503」が返されました。これは、テストモニタサービスに必要なリソースが不足したことを示しています。 |
|||||||

種類が少なく、量が中程度のシナリオのパフォーマンスの詳細
このシナリオでは、結果あたりのステップ数と製品数は一定です。既存の製品の下に新しい結果を追加することで、データスケールが増加します。
| インジェスト ステップ | 1秒あたりにインジェストされた平均ステップ数 | 1秒あたりの平均リクエスト数 |
|---|---|---|
| 0~500万 | 727 | 7.27 |
| 500万~1,000万 | 590 | 5.9 |
| 1,000万~1,500万 | 572 | 5.72 |
| 1,500万~2,000万 | 541 | 5.41 |
| 2,000万~2,500万 | 539 | 5.39 |


| 適用したフィルタ | Take1 | Return count2 | 5M (秒) | 10M (秒) | 15M (秒) | 20M (秒) | 25M (秒) |
|---|---|---|---|---|---|---|---|
| 製品グリッドクエリ | |||||||
| Part number | 1000 | False | 0.081 | 0.064 | 0.077 | 0.072 | 0.104 |
| Family and Name | 1000 | False | 0.061 | 0.067 | 0.092 | 0.073 | 0.08 |
| Updated time | 1000 | False | 0.061 | 0.079 | 0.085 | 0.066 | 0.081 |
| Metadata | 1000 | False | 0.061 | 0.078 | 0.122 | 0.091 | 0.094 |
| フィルタなし | 1000 | False | 0.065 | 0.067 | 0.058 | 0.095 | 0.055 |
| Results Grid Queries | |||||||
| Test program | 1000 | False | 0.2 | 0.541 | 1.811 | 1.482 | 1.878 |
| Part number | 1000 | False | 0.149 | 0.214 | 0.496 | 0.197 | 0.33 |
| Status | 1000 | False | 0.146 | 0.273 | 0.206 | 0.268 | 0.483 |
| Property | 1000 | False | 0.201 | 0.807 | 2.048 | 0.942 | 1.83 |
| Keyword | 1000 | False | 0.317 | 1.827 | 2.717 | 3.473 | 3.473 |
| Workspace | 1000 | False | 0.148 | 0.39 | 1.706 | 0.633 | 0.917 |
| ID | 1000 | False | 0.135 | 0.152 | 0.371 | 0.227 | 0.166 |
| フィルタなし | 1000 | False | 0.259 | 0.662 | 1.741 | 1.323 | 1.269 |
| Count query | 0 | True | 0.131 | 0.315 | 2.001 | 0.869 | 2.574 |
| Steps Grid Queries | |||||||
| Step name | 1000 | True | 0.071 | 0.135 | 0.171 | 0.103 | 0.183 |
| Measurement Name | 1000 | True | 0.071 | 0.111 | 0.194 | 0.106 | 0.171 |
| Measurement name and Step name | 1000 | True | 0.069 | 0.113 | 0.289 | 0.122 | 0.217 |
| Applying projections | 1000 | True | 0.077 | 0.103 | 0.129 | 0.102 | 0.102 |
| Step id | 1000 | True | 0.081 | 0.085 | 0.149 | 0.102 | 0.133 |
| Data Spaces queries | |||||||
| Part number and Test program | 10000 | False | 0.427 | 1.124 | 2.571 | 1.035 | 3.897 |
| Part number and Result metadata | 1000 | False | 0.209 | 0.407 | 1.952 | 0.784 | 1.896 |
| Part number, Test program and Step name | 1000または10000 | False | 0.186 | 0.401 | 2.945 | 1.14 | 2.093 |
| Part number and Paths | 1000 | False | 0.784 | 4.956 | 7.993 | 5.836 | 8.107 |
| Part number (Path API) | 1000 | False | 10.452 | 20.032 | タイムアウト | 19.767 | 16.725 |
| Part number and Program name (Path API) | 1000 | False | 0.196 | 0.377 | 0.848 | 0.284 | 0.275 |
| Part number (equals and contains) | 1000または10000 | False | 9.1 | タイムアウト | タイムアウト | タイムアウト | タイムアウト |
| Input conditions | 1000 | False | タイムアウト | タイムアウト | タイムアウト | タイムアウト | タイムアウト |
| Product name | 10000 | False | 4.594 | タイムアウト | タイムアウト | タイムアウト | タイムアウト |
| Result metadata | 1000 | False | 6.167 | タイムアウト | タイムアウト | タイムアウト | タイムアウト |
|
1クエリ要求の本体部分の takeパラメーターを表します。フェッチするレコード数はこの数までに制限されます。 2クエリ要求の本体部分の returnCountパラメータを表します。Trueの場合、適用したフィルタに一致するレコードの合計カウントがフェッチされます。 メモ フィルタでContains、Product name equals、Result metadata、Input conditionなどを指定するデータスペースクエリの39%で「エラー503」が返されました。これは、テストモニタサービスに必要なリソースが不足したことを示しています。
|
|||||||

種類が少なく、量が大量のシナリオのパフォーマンスの詳細
このシナリオでは、製品数と製品あたりの結果数は一定です。既存の結果の下に新しいステップを追加することで、データスケールが増加します。
| インジェスト ステップ | 1秒あたりにインジェストされた平均ステップ数 | 1秒あたりの平均リクエスト数 |
|---|---|---|
| 0~500万 | 1184 | 2.37 |
| 500万~1,000万 | 1101 | 2.2 |
| 1,000万~1,500万 | 1052 | 2.1 |
| 1,500万~2,000万 | 999 | 2 |
| 2,000万~2,500万 | 953 | 1.91 |


| 適用したフィルタ | Take1 | Return count2 | 5M (秒) | 10M (秒) | 15M (秒) | 20M (秒) | 25M (秒) |
|---|---|---|---|---|---|---|---|
| 製品グリッドクエリ | |||||||
| Part number | 1000 | False | 0.076 | 0.079 | 0.063 | 0.087 | 0.052 |
| Family and Name | 1000 | False | 0.065 | 0.053 | 0.06 | 0.057 | 0.058 |
| Updated time | 1000 | False | 0.083 | 0.06 | 0.064 | 0.059 | 0.058 |
| Metadata | 1000 | False | 0.072 | 0.057 | 0.072 | 0.055 | 0.079 |
| フィルタなし | 1000 | False | 0.071 | 0.052 | 0.058 | 0.059 | 0.056 |
| 結果グリッドクエリ | |||||||
| Test program | 1000 | False | 0.133 | 0.082 | 0.085 | 0.091 | 0.097 |
| Part number | 1000 | False | 0.129 | 0.127 | 0.131 | 0.129 | 0.126 |
| Status | 1000 | False | 0.113 | 0.098 | 0.116 | 0.094 | 0.092 |
| Property | 1000 | False | 0.07 | 0.107 | 0.073 | 0.075 | 0.063 |
| Keyword | 1000 | False | 0.073 | 0.079 | 0.075 | 0.063 | 0.069 |
| Workspace | 1000 | False | 0.098 | 0.133 | 0.103 | 0.085 | 0.09 |
| ID | 1000 | False | 0.099 | 0.107 | 0.139 | 0.203 | 0.099 |
| フィルタなし | 1000 | False | 0.131 | 0.137 | 0.107 | 0.126 | 0.144 |
| Count query | 0 | True | 0.075 | 0.070 | 0.071 | 0.057 | 0.056 |
| ステップグリッドクエリ | |||||||
| Step name | 1000 | True | 0.082 | 1.287 | 2.778 | 5.129 | 5.891 |
| Measurement Name | 1000 | True | 0.132 | 2.053 | 1.989 | 5.382 | 3.71 |
| Measurement name and Step name | 1000 | True | 0.142 | 1.277 | 3.927 | 4.681 | 7.07 |
| Applying projections | 1000 | True | 0.08 | 0.119 | 0.079 | 0.092 | 0.082 |
| Step id | 1000 | True | 0.08 | 0.092 | 0.093 | 0.09 | 0.108 |
| データスペース クエリ | |||||||
| Part number | 1000または10000 | False | 1.039 | 1.038 | 1.01 | 1.084 | 1.132 |
| Product name | 10000 | False | 1.452 | 1.422 | 1.403 | 1.472 | 1.816 |
| Part number and Test program | 10000 | False | 1.465 | 1.478 | 1.48 | 1.528 | 1.44 |
| Product name and Result status | 10000 | False | 1.566 | 1.474 | 1.437 | 1.503 | 1.488 |
| Part number and Result metadata | 1000 | False | 0.623 | 0.606 | 1.074 | 1.609 | 0.343 |
| Part number and Step status | 10000 | False | 1.503 | 1.442 | 1.498 | 1.527 | 1.9 |
| Part number, Test program, and Step name | 1000または10000 | False | 1.412 | 9.546 | 2.031 | 3.761 | 5.345 |
| Part number and Paths | 1000 | False | 0.245 | 0.344 | 0.569 | 0.336 | 0.467 |
| Input conditions | 1000 | False | 0.241 | 0.226 | 0.234 | 0.232 | 0.223 |
| Part number (Path API) | 1000 | False | 0.235 | 0.422 | 0.482 | 0.748 | 0.431 |
| Part number and Program name (Path API) | 1000 | False | 0.099 | 0.227 | 0.167 | 0.145 | 0.217 |
| Input condition value - equals | 1000 | False | 14.024 | タイムアウト | タイムアウト | タイムアウト | タイムアウト |
| Program name - Contains | 10000 | False | 2.498 | タイムアウト | タイムアウト | タイムアウト | タイムアウト |
| Result metadata - Contains | 1000 | False | 1.575 | タイムアウト | タイムアウト | タイムアウト | タイムアウト |
|
1クエリ要求の本体部分の takeパラメーターを表します。フェッチするレコード数はこの数までに制限されます。 2クエリ要求の本体部分の returnCountパラメータを表します。Trueの場合、適用したフィルタに一致するレコードの合計カウントがフェッチされます。 メモ フィルタでProgram name contains、Result metadataなどを指定するデータスペースクエリの5.7%で「エラー503」が返されました。これは、テストモニタサービスに必要なリソースが不足したことを示しています。
|
|||||||

関連コンテンツ
- テストモニタAPIを使用してテスト結果をパブリッシュする
SystemLinkテストモニタAPIを使用すると、テスト結果のパブリッシュ、パラメトリックデータの記録、および結果への追加ファイルの添付を行うことができます。
- テストを監視する
テストの進行状況を追跡し、 製品に関する洞察 テスト結果 でテストレポートを表示します。/nitestmonitor APIまたはTestStandとの統合を使用できます。
- SystemLink API リファレンス
- Dynamic Linq クエリ言語