このトピックでは、異なる暗号化設定での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は、カスタム暗号化ルールに基づいてデータを暗号化します。 テストでは、さまざまなシナリオでデータベースのパフォーマンスをテストするために、さまざまな数のデータ列が暗号化されます。
Elastic Compute Service (ECS) インスタンスでOLTP-Benchプロジェクトを設定します。 設定方法の詳細については、「OLTB-Benchの公式ページ」をご参照ください。
EncJDBCとOLTPベンチを統合します。 EncJDBCの統合方法の詳細については、「EncJDBCの統合」をご参照ください。
次のコンテンツを含む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>
OLTP-Benchプロジェクトがコンパイルされたら、次のコマンドを実行してデータをデータベースにインポートします。
. /oltpbenchmark -b tpcc -c tpcc_encmysql.xml -- load=true -- create=true -s 1 -o tpcc
暗号化された列や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% です。