この Topic では、さまざまな暗号化条件下での Confidential Database のパフォーマンスについて説明し、暗号化ソリューションの評価と選択を支援します。
テスト環境
構成項目 | Elastic Compute Service (ECS) インスタンス (テストクライアントは ECS インスタンスにデプロイ) | PolarDB for MySQL クラスター | 説明 |
リージョンとゾーン | 杭州ゾーン H (プライマリ)、杭州ゾーン J | 杭州ゾーン H | テストは同じリージョンとゾーンで実行されました。 |
ネットワークタイプ | Virtual Private Cloud (VPC) | Virtual Private Cloud (VPC) | テストは同じ VPC で実行されました。 |
CPU とメモリ | 8 コア、32 GB | 64 コア、512 GB | 該当なし |
インスタンスタイプ | ecs.s6-c1m4.2xlarge | polar.mysql.x8.8xlarge | 該当なし |
インスタンス/イメージバージョン | Alibaba Cloud Linux 2.1903 LTS 64 ビットクイック起動 | カーネルバージョン:8.0.2.2.12 | 該当なし |
テストツール (oltpbench)
Oltpbench は、オンラインランザクション処理 (OLTP) 向けのオープンソースのベンチマークツールで、データベース管理システムのパフォーマンスとスケーラビリティをテストします。TPC-C、TPC-E、YCSB など、さまざまなワークロードタイプをシミュレートするための複数のベンチマークプログラムを提供します。この Topic では、oltpbench の TPC-C テストを使用して、OLTP シナリオにおける Confidential Database のパフォーマンスを評価します。
メトリック
1 秒あたりのトランザクション数 (TPS):データベースが 1 秒あたりに実行するトランザクションの数です。これは、成功した COMMIT 操作の数で測定されます。
操作手順
Confidential Database は、設定した暗号化ルールに基づいてデータを暗号化します。このテストでは、TPC-C テストで暗号化されたデータ列を調整することにより、さまざまなシナリオにおける Confidential Database のパフォーマンスの what-if 分析を実行します。
ご利用の ECS インスタンスで oltpbench プロジェクトを設定します。詳細については、「oltpbench の設定」をご参照ください。
EncJDBC を oltpbench と統合します。詳細については、「EncJDBC の統合」をご参照ください。
以下のように oltpbench 設定ファイルを作成します。
<?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> <work> <time>180</time> <rate>unlimited</rate> <weights>45,43,4,4,4</weights> </work> </works> <!-- TPCC 固有 --> <transactiontypes> <transactiontype> <name>NewOrder</name> </transactiontype> <transactiontype> <name>Payment</name> </transactiontype> <transactiontype> <name>OrderStatus</name> </transactiontype> <transactiontype> <name>Delivery</name> </transactiontype> <transactiontype> <name>StockLevel</name> </transactiontype> </transactiontypes> </parameters>oltpbench プロジェクトをコンパイルした後、次のコマンドを実行してデータベースにデータをインポートします。
./oltpbenchmark -b tpcc -c tpcc_encmysql.xml --load=true --create=true -s 1 -o tpccConfidential Database の暗号化設定、TPC-C パラメーター、およびその他の構成を繰り返し調整して、OLTP シナリオでのパフォーマンス (TPS/QPS) を包括的にテストします。
./oltpbenchmark -b tpcc -c tpcc_encmysql.xml --execute=true -s 1 -o tpcc
テストシナリオと結果
シナリオの説明
各テスト結果は、3 回のテスト実行の平均 TPS です。各テスト実行は 1 分間続きます。
パフォーマンステストの結果には、クライアントで返された暗号化フィールドを復号するオーバーヘッドが含まれます。
この TPC-C テストシナリオでは、1 秒あたりのクエリ数 (QPS) は TPS の固定倍数であり、TPS 値の約 9〜10 倍です。したがって、このテストではパフォーマンスの測定に TPS のみを使用します。
Terminal パラメーターは、TPC-C の同時クライアント数をシミュレートします。これは、並列テストスレッドの数に対応します。
シナリオ 1:ビジネスデータ列の 20% を暗号化
このシナリオでは、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% |
テスト結果は、機密性の高いビジネスデータ列の 20% が暗号化されている場合、TPC-C テストにおける Confidential Database のパフォーマンスオーバーヘッドは、プレーンテキストデータベースと比較して 7% から 9% の間であることを示しています。
シナリオ 2:ビジネスデータ列の 50% を暗号化
シナリオ 1 で暗号化された 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% |
テスト結果は、機密性の高いビジネスデータ列の 50% が暗号化されている場合、TPC-C テストにおける Confidential Database のパフォーマンスオーバーヘッドは、プレーンテキストデータベースと比較して 14% から 17% の間であることを示しています。
シナリオ 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% |
テスト結果は、すべてのビジネスデータ列が暗号化されている場合、TPC-C テストにおける Confidential Database のパフォーマンスオーバーヘッドは、プレーンテキストデータベースと比較して 21% から 22% の間であることを示しています。