すべてのプロダクト
Search
ドキュメントセンター

Hologres:データ書き込み、更新、ポイントクエリのストレステストに関するベストプラクティス

最終更新日:Feb 05, 2026

Hologres は PostgreSQL プロトコルと互換性のあるワンストップリアルタイムデータウェアハウスエンジンです。大量データのリアルタイム書き込み、更新、分析をサポートしています。Hologres はペタバイト規模のデータに対するオンライン分析処理(OLAP)およびアドホック分析を処理でき、高い同時実行性と低遅延でオンラインデータサービスも提供します。本トピックでは、Hologres におけるデータ書き込み、更新、ポイントクエリのストレステスト方法とその結果について説明します。

テスト計画の概要

テストシナリオ

本トピックでは、以下のテストシナリオを取り上げます。

  • データ書き込みシナリオ:Hologres の行指向テーブル、列指向テーブル、行・列ハイブリッドテーブルへのデータ書き込み性能をテストします。

  • データ更新シナリオ:プライマリキーを持つ行指向テーブル、列指向テーブル、行・列ハイブリッドテーブルのデータ更新性能をテストします。グローバル更新と部分更新の両方を含みます。

  • ポイントクエリシナリオ:プライマリキーによるフィルタリングを用いた行指向テーブルおよび行・列ハイブリッドテーブルのポイントクエリ性能をテストします。

テストツール

本トピックでは、Hologres が開発したオープンソースのテストツールである holo-e2e-performance-tool を使用します。詳細については、「holo-e2e-performance-tool」をご参照ください。

holo-e2e-performance-tool には以下のような利点があります。

  • シンプルなテストプロセス:holo-e2e-performance-tool はテーブル作成、テストデータ生成、パフォーマンステストなどすべてのモジュールを統合しており、事前にテストデータを準備する必要がありません。

  • 柔軟なパラメーター設定:カラム数、カラムサイズ、行数などのパラメーターを設定項目を簡単に調整することでカスタマイズできます。これにより、実際のビジネスシナリオに近いパフォーマンステストを実行できます。

  • 正確なテスト結果:テストデータのプライマリキーは連続的に増分する整数の系列です。この設計により、設定項目でデータ量を調整するだけで、更新およびポイントクエリシナリオにおいてすべてのプライマリキーが確実にヒットすることを保証します。

テスト手順

holo-e2e-performance-tool を使用してデータ書き込み、更新、ポイントクエリをテストする手順は以下のとおりです。

  1. データ書き込みテストを実行します。基本パラメーターを設定した後、指定された行数での書き込み性能をテストします。

  2. 書き込みシナリオのテストデータテーブルを維持したまま、同じパラメーターで再度テストを実行し、データ更新の性能をテストします。

  3. データ更新シナリオのテストデータテーブルを引き続き使用します。クエリ対象のプライマリキー範囲などのパラメーターを設定し、ポイントクエリの性能テストを実行します。

事前準備

基本環境の準備

テストの基本環境を準備します。要件は以下のとおりです。

説明

テスト結果に影響を与える可能性のある変数を減らすため、各テストごとに新しく作成したインスタンスを使用してください。スペックアップまたはスペックダウンを行ったインスタンスは使用しないでください。

  1. ECS インスタンスを作成します。

    Alibaba Cloud にログインし、テスト用クライアントとして Elastic Compute Service (ECS) インスタンスを作成します。推奨される ECS の仕様は以下のとおりです。

    • インスタンスタイプ:ecs.g6.4xlarge

    • オペレーティングシステム:Alibaba Cloud Linux 3.2104 LTS 64 ビット

    • ストレージ:ESSD (エンタープライズ SSD)

    • ECS インスタンスと Hologres インスタンスは同一リージョン、同一 Virtual Private Cloud (VPC)、同一ゾーン内に配置する必要があります。

    説明

    上記の仕様は必須ではありません。テスト中は ECS インスタンスの CPU および帯域幅をモニターし、リソースが完全に消費されていないことを確認してください。これにより、ECS インスタンスがパフォーマンスボトルネックになっていないことを確認できます。

    ECS インスタンスの作成方法の詳細については、「インスタンスの作成」をご参照ください。

  2. Hologres インスタンスを作成します。

    本テストでは専用(従量課金)インスタンスを使用します。インスタンスはテスト専用であるため、コンピューティングリソースは 64 vCPU および 256 GB メモリ に設定されています。必要に応じてコンピューティングリソースを選択できます。

    Hologres インスタンスの作成方法の詳細については、「Hologres インスタンスの購入」をご参照ください。

  3. テスト用データベースを作成します。

    作成した Hologres インスタンスにログインし、データベースを作成します。詳細については、「データベースの作成」をご参照ください。

テストツールの準備

  1. ECS インスタンスに Java 開発キット (JDK) 11 をインストールします。詳細については、「OpenJDK の手動デプロイ」をご参照ください。

  2. holo-e2e-performance-tool をダウンロードします。

  3. テストツールを ECS インスタンスにアップロードします。詳細については、「ワークベンチを使用したファイルのアップロードまたはダウンロード」をご参照ください。

パフォーマンステスト

データ書き込みシナリオ

仕組み

  • 書き込みモード:データは Fixed Copy モードまたは Insert モードで書き込まれます。

    • Fixed Copy モード:COPY 文を使用してデータを書き込み、Fixed Plan で SQL 実行を最適化します。詳細については、「Fixed Plan を使用した SQL 実行の高速化」をご参照ください。

    • Insert モード:INSERT 文を使用してデータを書き込み、Fixed Plan で SQL 実行を最適化します。

  • 特殊な構成:テストシナリオ間の互換性を確保し、テストおよび検証を簡素化するために、テストツールは設定したカラムに加えて以下のカラムをテーブルに追加します。

    • プライマリキーカラム id:テーブルのプライマリキーおよび分散キーとして機能します。値は 1 から始まり、テスト中に各行ごとに増分されます。

    • 時間カラム ts:テーブルのセグメントキーとして機能します。テスト中に現在時刻がこのカラムに書き込まれます。

  • データ書き込みの原則:テスト中、ツールはプライマリキー id を 1 から開始して増分しながらデータを書き込みます。現在時刻は時間カラムに書き込まれます。他の設定された TEXT カラムには、目標長さの文字列にプライマリキー id を追加したものが書き込まれます。テストは目標時間または目標行数に達すると停止し、結果が計算されます。

操作手順

  1. ECS インスタンス上にテスト設定ファイルを作成します。

    1. 次のコマンドを実行して、test_insert.conf という名前のファイルを作成します。

      vim test_insert.conf
    2. i キーを押して編集モードに入り、以下のサンプル内容を追加します。

      説明

      以下の例では行指向テーブルを使用しています。列指向テーブルまたは行・列ハイブリッドテーブルをテストする場合は、orientation パラメーターの値を column または row,column に変更してください。

      # 接続設定
      holoClient.jdbcUrl=jdbc:hologres://<ENDPOINT>:<PORT>/<DBNAME>
      holoClient.username=<AccessKey_ID>
      holoClient.password=<AccessKey_Secret>
      holoClient.writeThreadSize=100
      
      # 書き込み設定
      put.threadSize=8
      put.testByTime=false
      put.rowNumber=200000000
      put.testTime=600000
      
      # テーブル設定
      put.tableName=kv_test
      put.columnCount=20
      put.columnSize=20
      put.orientation=row
      
      # その他設定
      put.createTableBeforeRun=true
      put.deleteTableAfterDone=false
      put.vacuumTableBeforeRun=false

      以下の表はパラメーターの説明です。

      モジュール

      パラメーター

      説明

      注記

      接続設定

      jdbcUrl

      Hologres の Java Database Connectivity (JDBC) 接続文字列です。形式は jdbc:hologres://<ENDPOINT>:<PORT>/<DBNAME> です。

      ENDPOINT には、Hologres インスタンスの VPC ドメイン名を入力します。Hologres コンソールInstance Detailsページの Network Informationセクションからドメイン名を取得できます。

      username

      ご利用の Alibaba Cloud アカウントの AccessKey ID です。

      AccessKey ID を取得するには、AccessKey 管理ページにアクセスしてください。

      password

      ご利用の Alibaba Cloud アカウントの AccessKey Secret です。

      AccessKey Secret を取得するには、AccessKey 管理ページにアクセスしてください。

      writeThreadSize

      各 Holo Client が起動する書き込みスレッド数です。各 Holo Client 書き込みスレッドは 1 つの接続を占有します。このパラメーターは Insert モードでのみ有効です。

      Holo Client の詳細については、「Holo Client」をご参照ください。

      書き込み設定

      threadSize

      データ生成のためのスレッド数です。

      • FIXED_COPY モードでは、各スレッドが 1 つの接続を占有します。接続の総数はスレッド数と等しくなります。

      • INSERT モードでは、デフォルトで単一の Holo Client が共有されます。接続の総数は writeThreadSize になります。

      本テストで使用する 64 vCPU インスタンスの場合、FIXED_COPY モードではスレッド数を 8 に設定することを推奨します。インスタンスタイプおよびデータの特徴に応じてこのパラメーターを調整してください。

      testByTime

      指定された時間でテストを実行するか、指定された行数でテストを実行するかを指定します。

      有効値:

      • true:指定された時間でテストを実行します。

      • false:指定された行数でテストを実行します。

      rowNumber

      テストの目標行数です。このパラメーターは testByTime が false に設定されている場合にのみ有効です。

      該当なし

      testTime

      テストの目標時間(ミリ秒単位)です。このパラメーターは testByTime が true に設定されている場合にのみ有効です。

      該当なし

      テーブル設定

      tableName

      テスト対象テーブルの名前です。

      該当なし

      columnCount

      テーブルのカラム数です。各カラムのデータ型は TEXT です。

      該当なし

      columnSize

      テーブルの各カラムの文字長です。

      該当なし

      orientation

      テーブルのストレージクラスです。

      有効値:

      • row:行指向テーブル

      • column:列指向テーブル

      • row,column:行・列ハイブリッドテーブル

      その他設定

      createTableBeforeRun

      テスト開始前にテーブルを作成するかどうかを指定します。

      有効値:

      • true:テーブルを作成します。

      • false:テーブルを作成しません。

      true に設定した場合、テストツールはまず同名の既存テーブルを削除してから新しいテーブルを作成します。対象テーブル名がインスタンス内の他のテーブルと重複しないように注意してください。

      deleteTableAfterDone

      テスト完了後にテーブルを削除するかどうかを指定します。

      有効値:

      • true:テーブルを削除します。

      • false:テーブルを削除しません。

      書き込みテストの後、同じテーブルで更新やポイントクエリなどのテストを実行するには、このパラメーターを true に設定する必要があります。

      vacuumTableBeforeRun

      テスト開始前に VACUUM 操作を実行するかどうかを指定します。

      有効値:

      • true:VACUUM 操作を実行します。

      • false:VACUUM 操作を実行しません。

      VACUUM を実行すると強制的にコンパクション操作が行われます。これは INSERT モードでのデータ更新テストにのみ影響し、FIXED_COPY モードには影響しません。

    3. Esc キーを押し、:wq と入力して Enter キーを押すと、ファイルが保存されて閉じられます。

  2. データ書き込みテストを実行します。

    次の文を実行してテストを開始します。

    # Fixed Copy モードでデータ書き込みテストを実行
    java -jar holo-e2e-performance-tool-1.0.0.jar test_insert.conf FIXED_COPY
    • テストツールはデフォルトでルートディレクトリに result.csv という名前のファイルに結果を保存します。データ書き込みおよび更新シナリオのモードパラメーターには、Fixed Copy モードの場合は FIXED_COPY、Insert モードの場合は INSERT の 2 つの値があります。

  3. テスト結果を確認します。

    次のコマンドを実行してテスト結果を表示します。

    cat result.csv

    result.csv ファイルには以下のフィールドが含まれています。

    フィールド

    説明

    start

    テスト開始時刻

    end

    テスト終了時刻

    count

    テストデータの行数

    qps1

    直近 1 分間の平均 QPS

    qps5

    直近 5 分間の平均 QPS

    qps15

    直近 15 分間の平均 QPS

    latencyMean

    平均遅延時間

    INSERT モードおよび GET モードで収集されます。

    latencyP99

    P99 遅延時間

    INSERT モードおよび GET モードで収集されます。

    latencyP999

    P999 遅延時間

    INSERT モードおよび GET モードで収集されます。

    version

    インスタンスバージョン

データ更新シナリオ

仕組み

  • テスト中、ツールはプライマリキー id を 1 から開始して増分しながらデータを更新します。時間カラムは現在時刻に更新されます。更新対象の他の設定された TEXT カラム(グローバル更新または部分更新を設定可能)には、目標長さの文字列にプライマリキー id を追加したものが再書き込みされます。テストは目標時間または目標行数に達すると停止し、結果が計算されます。

  • テーブルに更新対象のデータが存在するようにするため、事前にテーブルにデータを書き込み、deleteTableAfterDone を false に設定しておく必要があります。

グローバル更新の操作手順

  1. ECS インスタンス上にテスト設定ファイルを作成します。

    1. 次のコマンドを実行して、test_update.conf という名前のファイルを作成します。

      vim test_update.conf
    2. i キーを押して編集モードに入り、以下のサンプル内容を追加します。

      説明
      • 以下の例では行指向テーブルを使用しています。列指向テーブルまたは行・列ハイブリッドテーブルをテストする場合は、orientation パラメーターの値を column または row,column に変更してください。

      • データ書き込みシナリオと比較して、createTableBeforeRun パラメーターの値を true から false に変更するだけで、データ更新テストを開始できます。他のすべてのパラメーターは同じままにしてください。

      # 接続設定
      holoClient.jdbcUrl=jdbc:hologres://<ENDPOINT>:<PORT>/<DBNAME>
      holoClient.username=<AccessKey_ID>
      holoClient.password=<AccessKey_Secret>
      holoClient.writeThreadSize=100
      
      # 書き込み設定
      put.threadSize=8
      put.testByTime=false
      put.rowNumber=200000000
      put.testTime=600000
      
      # テーブル設定
      put.tableName=kv_test
      put.columnCount=20
      put.columnSize=20
      put.orientation=row
      
      # その他設定
      put.createTableBeforeRun=false
      put.deleteTableAfterDone=false
      put.vacuumTableBeforeRun=false

      パラメーターの説明については、「データ書き込み」シナリオのセクションにあるパラメーター説明表をご参照ください。

    3. Esc キーを押し、:wq と入力して Enter キーを押すと、ファイルが保存されて閉じられます。

  2. グローバル更新テストを実行します。

    次の文を実行してテストを開始します。

    # Fixed Copy モードでデータ書き込みテストを実行
    java -jar holo-e2e-performance-tool-1.0.0.jar test_update.conf FIXED_COPY

  3. テスト結果を確認します。

    次のコマンドを実行してテスト結果を表示します。

    cat result.csv

    result.csv ファイルには以下のフィールドが含まれています。

    フィールド

    説明

    start

    テスト開始時刻

    end

    テスト終了時刻

    count

    テストデータの行数

    qps1

    直近 1 分間の平均 QPS

    qps5

    直近 5 分間の平均 QPS

    qps15

    直近 15 分間の平均 QPS

    latencyMean

    平均遅延時間

    INSERT モードおよび GET モードで収集されます。

    latencyP99

    P99 遅延時間

    INSERT モードおよび GET モードで収集されます。

    latencyP999

    P999 遅延時間

    INSERT モードおよび GET モードで収集されます。

    version

    インスタンスバージョン

部分更新の操作手順

  1. ECS インスタンス上にテスト設定ファイルを作成します。

    1. 次のコマンドを実行して、test_update_part.conf という名前のファイルを作成します。

      vim test_update_part.conf
    2. i キーを押して編集モードに入り、以下の内容を追加します。

      説明
      • 以下の例では行指向テーブルを使用しています。列指向テーブルまたは行・列ハイブリッドテーブルをテストする場合は、orientation パラメーターの値を column または row,column に変更してください。

      • グローバル更新シナリオと比較して、部分更新シナリオでは writeColumnCount パラメーターが必要です。このパラメーターは、TEXT カラムのうち書き込むカラム数を定義します。本トピックでは、このパラメーターをテーブルの columnCount の 50% に設定しています。

      # 接続設定
      holoClient.jdbcUrl=jdbc:hologres://<ENDPOINT>:<PORT>/<DBNAME>
      holoClient.username=<AccessKey_ID>
      holoClient.password=<AccessKey_Secret>
      holoClient.writeThreadSize=100
      
      # 書き込み設定
      put.threadSize=8
      put.testByTime=false
      put.rowNumber=200000000
      put.testTime=600000
      
      # テーブル設定
      put.tableName=kv_test
      put.columnCount=20
      put.columnSize=20
      put.writeColumnCount=10
      put.orientation=row
      
      # その他設定
      put.createTableBeforeRun=false
      put.deleteTableAfterDone=false
      put.vacuumTableBeforeRun=false

      パラメーターの説明については、グローバル更新シナリオのパラメーター説明表をご参照ください。

    3. Esc キーを押し、:wq と入力して Enter キーを押すと、ファイルが保存されて閉じられます。

  2. 部分更新テストを実行します。

    次のコマンドを実行してテストを開始します。

    # Fixed Copy モードでデータ書き込みテストを実行
    java -jar holo-e2e-performance-tool-1.0.0.jar test_update_part.conf FIXED_COPY

  3. テスト結果を確認します。

    次のコマンドを実行してテスト結果を表示します。

    cat result.csv

    result.csv ファイルには以下のフィールドが含まれています。

    フィールド

    説明

    start

    テスト開始時刻

    end

    テスト終了時刻

    count

    テストデータの行数

    qps1

    直近 1 分間の平均 QPS

    qps5

    直近 5 分間の平均 QPS

    qps15

    直近 15 分間の平均 QPS

    latencyMean

    平均遅延時間

    INSERT モードおよび GET モードで収集されます。

    latencyP99

    P99 遅延時間

    INSERT モードおよび GET モードで収集されます。

    latencyP999

    P999 遅延時間

    INSERT モードおよび GET モードで収集されます。

    version

    インスタンスバージョン

ポイントクエリシナリオ

仕組み

  • ポイントクエリモード:

    • 同期モード:ポイントクエリ API はブロッキングです。呼び出しは実際のリクエストが完了するまで待機してから戻ります。単一のワーカースレッドでは、各ポイントクエリリクエストは開始から終了まで 1 つの SQL 文に対応します。現在のリクエストが完了した後でのみ、次のリクエストを開始できます。同期モードは、スループットよりも遅延に敏感なシナリオに適しています。

    • 非同期モード:ポイントクエリ API はノンブロッキングです。呼び出しは実際のリクエストが完了するのを待たずにすぐに戻ります。複数のポイントクエリリクエストが非同期で送信された後、クライアントのワーカースレッドがバッチサイズまたは送信間隔が満たされた時点でそれらを 1 つの SQL 文にまとめて処理します。非同期モードは、高スループットが求められ、遅延にそれほど敏感でないシナリオ(例:Flink を使用してリアルタイムデータを消費し、高スループットのテーブル結合を行う場合)に適しています。

  • ポイントクエリテストの原則:テスト中、ツールは設定されたプライマリキー範囲内でランダムにターゲット id を生成し、同期または非同期でポイントクエリを実行します。テストは目標時間に達すると停止し、結果が計算されます。

操作手順

説明
  • 自動生成されたデータがポイントクエリのビジネス要件を満たさない場合は、独自のビジネスデータを書き込むことができます。プライマリキー、分散キー、セグメントキーなどのプロパティを持つテーブルを作成し、以下の手順に従ってポイントクエリのパフォーマンステストを実行してください。

  • カスタムテーブルには、INT または BIGINT データ型の単一カラムプライマリキーを含める必要があります。プライマリキーの値は連続している必要があります。

  1. ECS インスタンス上にテスト設定ファイルを作成します。

    1. 次のコマンドを実行して、test.conf という名前のファイルを作成します。

      vim test.conf
    2. i キーを押して編集モードに入り、以下の内容を追加します。

      説明

      以下の例では行指向テーブルを使用しています。行・列ハイブリッドテーブルをテストする場合は、orientation パラメーターの値を row,column に変更してください。

      # 接続設定
      holoClient.jdbcUrl=jdbc:hologres://<ENDPOINT>:<PORT>/<DBNAME>
      holoClient.username=<AccessKey_ID>
      holoClient.password=<AccessKey_Secret>
      holoClient.readThreadSize=32
      
      # テスト設定
      get.threadSize=8
      get.testTime=300000
      get.tableName=kv_test
      get.async=true
      get.vacuumTableBeforeRun=true
      get.keyRangeParams=L1-200000000
      
      # テーブル初期化設定(PREPARE_GET_DATA モードでのみ有効)
      prepareGetData.rowNumber=200000000
      prepareGetData.orientation=row
      put.columnCount=20
      put.columnSize=20

      以下の表は設定パラメーターの説明です。

      モジュール

      パラメーター

      説明

      注記

      接続設定

      jdbcUrl

      Hologres の JDBC 接続文字列です。形式は jdbc:hologres://<ENDPOINT>:<PORT>/<DBNAME> です。

      ENDPOINT には、Hologres インスタンスの VPC ドメイン名を入力します。Hologres コンソールInstance Detailsページの Network Informationセクションからドメイン名を取得できます。

      username

      ご利用の Alibaba Cloud アカウントの AccessKey ID です。

      AccessKey ID を取得するには、AccessKey 管理ページにアクセスしてください。

      password

      ご利用の Alibaba Cloud アカウントの AccessKey Secret です。

      AccessKey Secret を取得するには、AccessKey 管理ページにアクセスしてください。

      readThreadSize

      クエリシナリオの接続数です。

      • 非同期モードでは、バッチ処理の効率を向上させるために、スレッド数(threadSize)の 2~4 倍に設定することを推奨します。

      • 同期モードでは、コンピューティングリソースを十分に活用するために、接続数を増やすことを推奨します。本トピックでは、接続数を 100 に設定しています。

      テスト設定

      threadSize

      リクエスト条件を生成するためのスレッド数です。

      本テストで使用する 64 vCPU インスタンスの場合:

      • 非同期ポイントクエリモードでは、スレッド数を 8 に設定することを推奨します。

      • 同期ポイントクエリモードでは、スレッド数を 500 に設定することを推奨します。

      インスタンスタイプおよびデータの特徴に応じてこのパラメーターを調整してください。

      testTime

      テストの目標時間(ミリ秒単位)です。

      該当なし。

      tableName

      テスト対象テーブルの名前です。

      該当なし。

      async

      ポイントクエリテストが非同期かどうかを指定します。

      有効値:

      • true:非同期

      • false:同期

      vacuumTableBeforeRun

      テスト開始前に vacuum 操作を実行するかどうかを指定します。

      有効値:

      • true:VACUUM 操作を実行します。

      • false:VACUUM 操作を実行しません。

      VACUUM を実行すると強制的にコンパクション操作が行われます。

      keyRangeParams

      ポイントクエリのプライマリキー範囲パラメーターです。形式は <I/L><Start>-<End> です。

      パラメーターの説明:

      • I/L:I は INT 型、L は BIGINT 型を示します。

      • Start:プライマリキーの開始値

      • End:プライマリキーの終了値

      ポイントクエリテスト中、ツールは設定された範囲内でランダムにターゲットプライマリキーを生成してクエリを実行します。

      テーブル初期化設定(PREPARE_GET_DATA モードでのみ有効)

      rowNumber

      テーブルに事前生成するデータ行数です。

      該当なし。

      orientation

      事前生成するテーブルのストレージクラスです。

      有効値:

      • row:行指向テーブル

      • column:列指向テーブル

      • 行、列: 行と列を持つテーブル。

      columnCount

      事前生成するテーブルのカラム数です。各カラムのデータ型は TEXT です。

      該当なし。

      columnSize

      事前生成するテーブルの各カラムの文字長です。

      該当なし。

    3. Esc キーを押し、:wq と入力して Enter キーを押すと、ファイルが保存されて閉じられます。

  2. 次の文を実行してテストを開始します。

    説明

    ポイントクエリシナリオのモードパラメーターには、ポイントクエリ前のデータ準備モードの場合は PREPARE_GET_DATA、ポイントクエリモードの場合は GET の 2 つの値があります。すでにビジネスデータを書き込んだ場合、またはデータ書き込みおよび更新テストを完了してテストテーブルを保持している場合は、PREPARE_GET_DATA モードを使用する必要はありません。直接 GET モードを使用してポイントクエリを実行できます。

    # PREPARE_GET_DATA モードを使用してデータを準備
    java -jar holo-e2e-performance-tool-1.0.0.jar test.conf PREPARE_GET_DATA 
    
    # GET モードを使用してポイントクエリテストを実行
    java -jar holo-e2e-performance-tool-1.0.0.jar test.conf GET
  3. テスト結果を確認します。

    次のコマンドを実行してテスト結果を表示します。

    cat result.csv

    result.csv ファイルには以下のフィールドが含まれています。

    フィールド

    説明

    start

    テスト開始時刻

    end

    テスト終了時刻

    count

    テストデータの行数

    qps1

    直近 1 分間の平均 QPS

    qps5

    直近 5 分間の平均 QPS

    qps15

    直近 15 分間の平均 QPS

    latencyMean

    平均遅延時間

    INSERT モードおよび GET モードで収集されます。

    latencyP99

    P99 遅延時間

    INSERT モードおよび GET モードで収集されます。

    latencyP999

    P999 遅延時間

    INSERT モードおよび GET モードで収集されます。

    version

    インスタンスバージョン

テスト結果

本トピックでは複数のシナリオをテストしています。データ書き込みおよび更新シナリオでは、行指向、列指向、行・列ハイブリッドの 3 つのストレージクラスをテストしました。列指向テーブルはポイントクエリに適していないため、ポイントクエリシナリオでは行指向および行・列ハイブリッドストレージクラスのみをテストしました。

パフォーマンステストの構成は以下のとおりです。テーブルのカラム数は 20、50、100 に設定され、各カラムのサイズは 20 文字でした。本テストでは、64 vCPU 搭載の Hologres V3.0.22 インスタンス(JDK 11 使用)を使用しました。このインスタンスタイプの推奨データ総量は 4,000 万行~4 億行の範囲であるため、本テストの各シナリオのデータ量は 2 億行に設定されました。

説明
  • インスタンスタイプ、テーブルスキーマ、データ量、同時実行度などのパラメーターはパフォーマンスに大きく影響します。実際のテストでは、まず Hologres インスタンスタイプ、テーブルスキーマ、データ量を決定し、その後、複数回のテスト実行で同時実行度を調整してください。

  • Hologres の最適なパフォーマンスをテストすることを目的とする場合、各テスト後にインスタンスの CPU 使用率をモニターしてください。CPU リソースが完全に活用されていない場合は、同時実行度を増やしてテストを継続し、最も正確で最適なパフォーマンス結果を取得してください。

  • 20 カラム

    QPS および遅延時間(ポイントクエリ用)の具体的な値を以下に示します。QPS はテスト結果ファイルの qps1 メトリックに基づき、遅延時間は latencyMean メトリックに基づいています。

    ストレージ形式

    テストシナリオ

    同時実行度設定

    QPS(万単位)

    遅延時間(ms)

    行指向

    書き込み(Static copy)

    threadSize=8

    88.3

    該当なし

    グローバル更新(Fixed copy)

    threadSize=8

    91.1

    該当なし

    部分更新(Fixed copy)

    threadSize=8

    136.7

    該当なし

    ポイントクエリ(非同期)

    threadSize=8

    readThreadSize=32

    43.6

    8.60

    ポイントクエリ(同期)

    threadSize=100

    readThreadSize=100

    26.1

    7.88

    列指向

    書き込み(Fixed copy)

    threadSize=8

    29.9

    該当なし

    グローバル更新(Fixed copy)

    threadSize=8

    18.5

    該当なし

    部分更新(Fixed copy)

    threadSize=8

    12.8

    該当なし

    行・列ハイブリッド

    書き込み(Fixed copy)

    threadSize=8

    25.0

    該当なし

    グローバル更新(Fixed copy)

    threadSize=8

    17.3

    該当なし

    部分更新(Fixed copy)

    threadSize=8

    17.5

    該当なし

    ポイントクエリ(非同期)

    threadSize=8

    readThreadSize=32

    40.4

    8.75

    ポイントクエリ(同期)

    threadSize=100

    readThreadSize=100

    27.0

    8.12

  • 50 カラム

    以下の表はテスト結果から得られた QPS および遅延時間(ポイントクエリ用)の具体的な値を示しています。QPS 値は qps1 メトリックから、遅延時間値は結果ファイルの latencyMean メトリックから取得しています。

    ストレージ形式

    テストシナリオ

    同時実行構成

    QPS(万単位)

    遅延時間(ms)

    行指向

    書き込み(Fixed copy)

    threadSize=8

    41.9

    該当なし

    グローバル更新(Fixed copy)

    threadSize=8

    38.2

    該当なし

    部分更新(Fixed copy)

    threadSize=8

    69.8

    該当なし

    ポイントクエリ(非同期)

    threadSize=8

    readThreadSize=32

    35.7

    10.20

    ポイントクエリ(同期)

    threadSize=100

    readThreadSize=100

    24.0

    9.28

    列指向

    書き込み(Fixed copy)

    threadSize=8

    15.5

    該当なし

    グローバル更新(Fixed copy)

    threadSize=8

    11.7

    該当なし

    部分更新(Fixed copy)

    threadSize=8

    6.4

    該当なし

    行・列ハイブリッド

    書き込み(Fixed copy)

    threadSize=8

    13.7

    該当なし

    グローバル更新(Fixed copy)

    threadSize=8

    10.5

    該当なし

    部分更新(Fixed copy)

    threadSize=8

    11.6

    該当なし

    ポイントクエリ(非同期)

    threadSize=8

    readThreadSize=32

    31.5

    12.29

    ポイントクエリ(同期)

    threadSize=100

    readThreadSize=100

    24.2

    10.00

  • 100 カラム

    以下の表はテスト結果から得られた QPS および遅延時間(ポイントクエリ用)の具体的な値を示しています。QPS 値は qps1 メトリックから、遅延時間値は結果ファイルの latencyMean メトリックから取得しています。

    ストレージ形式

    テストシナリオ

    同時実行性の構成

    QPS(万単位)

    遅延時間(ms)

    行指向

    書き込み(Fixed copy)

    threadSize=8

    24.4

    該当なし

    グローバル更新(Fixed copy)

    threadSize=8

    22.5

    該当なし

    部分更新(Fixed copy)

    threadSize=8

    38.1

    該当なし

    ポイントクエリ(非同期)

    threadSize=8

    readThreadSize=32

    26.6

    14.34

    ポイントクエリ(同期)

    threadSize=100

    readThreadSize=100

    21.4

    12.12

    列指向

    書き込み(Fixed copy)

    threadSize=8

    8.4

    該当なし

    グローバル更新(Fixed copy)

    threadSize=8

    6.9

    該当なし

    部分更新(Fixed copy)

    threadSize=8

    3.1

    該当なし

    行・列ハイブリッド

    書き込み(Fixed copy)

    threadSize=8

    7.6

    該当なし

    グローバル更新(Fixed copy)

    threadSize=8

    5.3

    該当なし

    部分更新(Fixed copy)

    threadSize=8

    6.8

    該当なし

    ポイントクエリ(非同期)

    threadSize=8

    readThreadSize=32

    25.0

    15.66

    ポイントクエリ(同期)

    threadSize=100

    readThreadSize=100

    21.4

    13.79