4つの一般的なテストデータシナリオに沿って、PostgreSQL上のテストモニタAPIのクエリとインジェストのパフォーマンスについて説明します。

シナリオ 説明 パフォーマンスの概要
種類が多く、量が少ない 製品数は多い。ステップ数は少ない。
  • リクエスト1件あたり 100ステップをインジェストする場合、インジェストされる平均ステップ数は、1秒あたり 636ステップです。
  • 製品、結果、ステップグリッドに関するクエリの平均応答時間は 1秒未満です。
  • 単純なデータスペースに対して、フィルタでPart numberProgram nameを指定するクエリの平均応答時間は 1 秒未満です。
  • Part number containsフィルタを指定するデータスペースクエリは30秒以上かかるため、タイムアウトしきい値を超えます。
  • 2,500万のステップレコードに使用されるPostgreSQLストレージは65.1 GBで、平均ステップサイズは2.71 KBです。
種類が少なく、量が多い 製品数は少ない。ステップ数は多い。
  • リクエスト1件あたり 500ステップをインジェストする場合、インジェストされる平均ステップ数は、1秒あたり 1082ステップです。
  • 製品、結果、ステップグリッドに関するクエリの平均応答時間は 1秒未満です。
  • ステップグリッドに対するクエリの平均応答時間は 2秒です。
  • 単純なデータスペースに対して、フィルタでPart numberProgram nameを指定するクエリの平均応答時間は 1 秒未満です。
  • フィルタでContainsMetadataInput conditionPathを指定するデータスペースクエリは 30秒以上かかり、タイムアウトしきい値を超えます。
  • 2,500万のステップレコードに使用されるPostgreSQLストレージは46.1 GBで、平均ステップサイズは1.93 KBです。
種類が少なく、量は中程度 製品数は少ない。結果数は多い。
  • リクエスト1件あたり 100ステップをインジェストする場合、インジェストされる平均ステップ数は、1秒あたり 594ステップです。
  • 製品グリッドおよびステップグリッドに対するクエリの平均応答時間は1秒未満です。
  • 結果グリッドに対するクエリの平均応答時間は2秒です。
  • 単純なデータスペースに対して、フィルタでProgram nameMetadata equalsを指定するクエリの平均応答時間は7秒未満です。
  • フィルタでPart number containsInput conditionProduct nameMetadata containsを指定するデータスペースクエリは30秒以上かかり、タイムアウトしきい値を超えます。
  • 2,500万のステップレコードに使用されるPostgreSQLストレージは50.2 GBで、平均ステップサイズは2.1 KBです。
種類が少なく、量が大量 1つの製品で結果とステップが大量にある
  • リクエスト1件あたり 500ステップをインジェストする場合、インジェストされる平均ステップ数は、1秒あたり 1058ステップです。
  • 製品、結果、シンプルなステップグリッドに関するクエリの平均応答時間は 1 秒です。
  • ステップグリッドに対して、フィルタでStep name contains/equals/not nullなどのプロパティを指定するクエリの平均応答時間は 5秒です。
  • 単純なデータスペースに対して、フィルタでPart numberProgram nameを指定するクエリの平均応答時間は 1 秒未満です。
  • フィルタでContainsInput conditionMetadataを指定するデータスペースクエリは30秒以上かかり、タイムアウトしきい値を超えます。
  • 2,500万のステップレコードに使用されるPostgreSQLストレージは46 GBで、平均ステップサイズは1.93 KBです。

前提条件

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のパフォーマンスを評価しました。

表 38. 種類が多く、量が少ないシナリオ
データセットのサイズ 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
表 39. 種類が少なく、量が多いシナリオ
データセットのサイズ 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
表 40. 種類が少なく、量が中程度のシナリオ
データセットのサイズ 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
表 41. 種類が少なく、量が大量のシナリオ
データセットのサイズ 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

種類が多く、量が少ないシナリオのパフォーマンスの詳細

このシナリオでは、結果あたりのステップ数と製品あたりの結果数は一定です。データスケールは、製品を追加することで増加します。

表 42. インジェスト パフォーマンス

ステップは、並列インジェストまたはクエリなしで、1回のリクエストにつき100個のバッチでインジェストしました。以下の表とチャートは、ステップデータをインジェストしたインジェストレートを500万回ごとの区切りで表したものです。

インジェスト ステップ 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
図 4. インジェストパフォーマンス - ヒストグラム


図 5. インジェストパフォーマンス - 2つのσトレンドラインを含む累積分布チャート


表 43. クエリパフォーマンス - 平均応答時間

クエリのパフォーマンスは、以下のカテゴリに関して 1秒あたり 10回のクエリで計測しました。

適用したフィルタ 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」が返されました。これは、テストモニタサービスに必要なリソースが不足したことを示しています。

図 6. データスペース クエリのヒストグラム


種類が少なく、量が多いシナリオのパフォーマンスの詳細

このシナリオでは、結果あたりのステップ数と製品あたりの結果数は一定です。データスケールは、製品を追加することで増加します。

表 44. インジェスト パフォーマンス

各結果には、16,000個以上のステップが含まれてまれているので、リクエスト1件につき、並行インジェストまたはクエリなしで500ステップをバッチでインジェストました。以下の表とチャートは、ステップデータをインジェストしたインジェストレートを500万回ごとの区切りで表したものです。

インジェスト ステップ 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
図 7. インジェストパフォーマンス - ヒストグラム


図 8. インジェストパフォーマンス - 2つのσトレンドラインを含む累積分布チャート


表 45. クエリパフォーマンス - 平均応答時間

クエリのパフォーマンスは、以下のカテゴリに関して 1秒あたり 10回のクエリで計測しました。

適用したフィルタ 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 containsResult metadata containsInput condition value equalsなどをフィルタで指定するデータスペースクエリの 8.7% で「エラー503」が返されました。これは、テストモニタサービスに必要なリソースが不足したことを示しています。

図 9. データスペース クエリのヒストグラム


種類が少なく、量が中程度のシナリオのパフォーマンスの詳細

このシナリオでは、結果あたりのステップ数と製品数は一定です。既存の製品の下に新しい結果を追加することで、データスケールが増加します。

表 46. インジェスト パフォーマンス

各結果には、100個以上のステップが含まれてまれているので、リクエスト1件につき、並行インジェストまたはクエリなしで100ステップをバッチでインジェストました。以下の表とチャートは、ステップデータをインジェストしたインジェストレートを500万回ごとの区切りで表したものです。

インジェスト ステップ 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
図 10. インジェストパフォーマンス - ヒストグラム


図 11. インジェストパフォーマンス - 2つのσトレンドラインを含む累積分布チャート


表 47. クエリパフォーマンス - 平均応答時間

クエリのパフォーマンスは、以下のカテゴリに関して 1秒あたり 10回のクエリで計測しました。

適用したフィルタ 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の場合、適用したフィルタに一致するレコードの合計カウントがフェッチされます。

メモ フィルタでContainsProduct name equalsResult metadataInput conditionなどを指定するデータスペースクエリの39%で「エラー503」が返されました。これは、テストモニタサービスに必要なリソースが不足したことを示しています。
図 12. データスペース クエリのヒストグラム


種類が少なく、量が大量のシナリオのパフォーマンスの詳細

このシナリオでは、製品数と製品あたりの結果数は一定です。既存の結果の下に新しいステップを追加することで、データスケールが増加します。

表 48. インジェスト パフォーマンス

各結果には、1回の実験に500個以上のステップが含まれてまれているので、リクエスト1件につき、並行インジェストまたはクエリなしで500ステップをバッチでインジェストました。以下の表とチャートは、ステップデータをインジェストしたインジェストレートを500万回ごとの区切りで表したものです。

インジェスト ステップ 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
図 13. インジェストパフォーマンス - ヒストグラム


図 14. インジェストパフォーマンス - 2つのσトレンドラインを含む累積分布チャート


表 49. クエリパフォーマンス - 平均応答時間

クエリのパフォーマンスは、以下のカテゴリに関して 1秒あたり 10回のクエリで計測しました。

適用したフィルタ 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 containsResult metadataなどを指定するデータスペースクエリの5.7%で「エラー503」が返されました。これは、テストモニタサービスに必要なリソースが不足したことを示しています。
図 15. データスペース クエリのヒストグラム