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

PolarDB:性能テスト

最終更新日:Jun 11, 2024

このトピックでは、異なる暗号化設定でのPolarDB Always Encryptedのパフォーマンスについて説明します

テスト環境

設定アイテム

ECSインスタンス (テストクライアントがデプロイされている場所)

PolarDB for MySQLクラスター

説明

リージョンとゾーン

杭州ゾーンH (プライマリ) および杭州ゾーンJ

杭州 (杭州) ゾーンH

テストは単一のリージョンとゾーンで行われます。

ネットワークタイプ

Virtual Private Cloud (VPC)

[VPC]

テストは1つのVPCで実行されます。

CPUとメモリ

8コアと32 GBのメモリ

64コアと512 GBのメモリ

N/A

インスタンスタイプ

ecs.s6-c1m4.2xlarge

polar.mysql.x8.8xlarge

N/A

インスタンスバージョンまたはイメージバージョン

Alibaba Cloud Linux 2.1903 LTS 64ビット (クイックスタート)

エンジンバージョン: 8.0.2.2.12

N/A

ベンチマークツール: OLTP-Bench

OLTP-Benchは、OLTPデータベースのパフォーマンスとスケーラビリティをテストするためのオープンソースのベンチマークツールです。 さまざまなタイプのワークロードでデータベースのパフォーマンスをテストするために、TPC-C、TPC-E、YCSBなどの複数のベンチマークを提供します。 このトピックでは、PolarDB Always Encryptedが有効になっているPolarDBクラスターのパフォーマンスをテストするためにTPC-Cを使用します。

メトリック

Transactions per second (TPS): データベースで1秒あたりにコミットされるトランザクションの数を示します。

テスト手順

PolarDB Always Encryptedは、カスタム暗号化ルールに基づいてデータを暗号化します。 テストでは、さまざまなシナリオでデータベースのパフォーマンスをテストするために、さまざまな数のデータ列が暗号化されます。

  1. Elastic Compute Service (ECS) インスタンスでOLTP-Benchプロジェクトを設定します。 設定方法の詳細については、「OLTB-Benchの公式ページ」をご参照ください。

  2. EncJDBCとOLTPベンチを統合します。 EncJDBCの統合方法の詳細については、「EncJDBCの統合」をご参照ください。

  3. 次のコンテンツを含むOLTP-Bench構成ファイルを作成します。

    <?xml version="1.0"?>
    <parameters>
    
        <!-- 接続の詳細 -->
        <dbtype>mysql</dbtype>
        <driver>com.aliyun.encdb.mysql.jdbc.EncDriver</driver>
        <DBUrl>jdbc:mysql:encdb:// xxxx.rwlb.rds.aliyuncs.com:3306/xxxx</DBUrl>
        <DBName>xxxx</DBName>
        <username>xxxx</username>
        <password>xxxxx</password>
        <isolation>TRANSACTION_SERIALIZABLE</isolation>
    
        <scalefactor>1</scalefactor>
    
        <!-- ワークロード -->
        <terminals>8</terminals>
        <works>
            <仕事>
                <time>180</time>
                <rate> 無制限 </rate>
                <weights>45,43、4,4、4</weights>
            </work>
        </works>
    
    
        <!-- TPCC固有 -->
            <transactiontypes>
            <transactiontype>
                    <name>NewOrder</name>
            </transactiontype>
            <transactiontype>
                    <name> 支払い </name>
            </transactiontype>
            <transactiontype>
                    <name>OrderStatus</name>
            </transactiontype>
            <transactiontype>
                    <name> 配信 </name>
            </transactiontype>
            <transactiontype>
                    <name> ストックレベル </name>
            </transactiontype>
            </transactiontypes>
    </parameters>
    
  4. OLTP-Benchプロジェクトがコンパイルされたら、次のコマンドを実行してデータをデータベースにインポートします。

    . /oltpbenchmark -b tpcc -c tpcc_encmysql.xml -- load=true -- create=true -s 1 -o tpcc
  5. 暗号化された列やTPC-Cパラメーターなどの設定を調整して、OLTPシナリオで常に暗号化されたPolarDBのパフォーマンスを包括的にテストします (TPSで測定) 。

    . /oltpbenchmark -b tpcc -c tpcc_encmysql.xml -- execute=true -s 1 -o tpcc

テスト条件と結果

テスト条件

  • 各試験は、平均結果を得るために3回行われ、各試験は1分間続く。

  • サーバから返された暗号化データの復号化による性能低下を測定する。

  • 試験において、QPS数は、TPS数の9〜10倍である。 したがって、このトピックではTPSの結果のみを示します。

  • Terminalパラメーターは、クライアントの同時数をシミュレートします。

シナリオ1: ビジネスデータの20% を暗号化

この状態では、データベース内のID情報が暗号化され、実際のビジネスシナリオで一般的な市民IDまたは注文IDの暗号化要件がシミュレートされます。

テスト結果

ターミナル

平文 (TPS)

20% 暗号化 (TPS)

パフォーマンスオーバーヘッド

8

260.55

237.64

8.79%

16

302.78

280.28

7.43%

24

330.04

298.03

9.70%

32

343.65

315.25

8.26%

パフォーマンスの低下は7% 〜10% です。

シナリオ2: ビジネスデータの50% を暗号化

ID列に加えて、価格、日付、数量などの機密データの列が暗号化されます。

テスト結果

ターミナル

平文 (TPS)

50% 暗号化 (TPS)

パフォーマンスオーバーヘッド

8

260.55

221.01

15.18%

16

302.78

256.64

15.24%

24

330.04

273.53

17.12%

32

343.65

293.65

14.55%

パフォーマンスの低下は14% 〜18% です。

シナリオ3: すべてのビジネスデータを暗号化

テスト結果

ターミナル

平文 (TPS)

100% 暗号化 (TPS)

パフォーマンスオーバーヘッド

8

260.55

201.62

22.62%

16

302.78

238.45

21.25%

24

330.04

256.36

22.32%

32

343.65

267.92

22.04%

パフォーマンスの低下は約22% です。