このトピックでは、RDSインスタンスのCPUとメモリへの影響など、さまざまなインスタンスタイプを使用するApsaraDB RDS for MySQLインスタンスのパフォーマンスに対する透過的データ暗号化 (TDE) の影響について説明します。 これにより、RDSインスタンスのTDEを有効にするかどうかを判断できます。
テストの結論
RDSインスタンスでTDEを有効にすると、パフォーマンスが低下し、CPU使用率が高くなります。
RDSインスタンスで少数の同時クエリが実行されると、RDSインスタンスのパフォーマンスが20% にもなる可能性があります。 RDSインスタンスで多数の同時クエリが実行されている場合、I/Oマージなどの理由により、パフォーマンスの低下は5% 未満になります。
4コアと16 GBのメモリを提供するRDSインスタンスでTDEが有効になっている場合、RDSインスタンスの暗号化されたテーブルにアクセスすると、CPU使用率が0.06% 〜4.22% の範囲で増加する可能性があります。 8コアと32 GBのメモリを提供するRDSインスタンスの場合、CPU使用率の増加は0.12% 〜2.86% です。
全体として、oltp_write_onlyやoltp_update_indexなどの書き込みシナリオでは、パフォーマンスの低下は明らかです。
テスト環境
設定アイテム | テストシナリオ1 | テストシナリオ2 |
リージョンとゾーン | cn-hangzhou | |
ネットワークタイプ | 仮想プライベートクラウド (VPC) | |
ハードウェアアーキテクチャ | x86 64 | |
ストレージタイプ | ローカルディスク | |
CPU | 4 コア | 8 コア |
メモリ容量 | 16 GB | 32 GB |
BP設定 | 12 GB | 24 GB |
最大 IOPS | 7000 | 12,000 |
データベースエンジンのバージョン | mysql80_8.0.28_20230610 | |
テストデータセットのVolumn | 41 GB |
BP設定は、innodb_buffer_poolパラメーターで指定されるバッファプールのサイズを指します。
クラウドディスクを使用するApsaraDB RDS for MySQLインスタンスでは、TDEはサポートされていません。
テストツール
sysbenchは、オープンソース、モジュラー、クロスプラットフォーム、およびマルチスレッドのベンチマークツールで、負荷の高いデータベースシステムのパフォーマンスを評価するために使用できます。 sysbenchの詳細とsysbenchの使用方法については、「sysbenchドキュメント」をご参照ください。
テストメトリクス
Transactions per second (TPS): このメトリックは、RDSインスタンスで1秒あたりにコミットされたトランザクションの数を示します。
平均レイテンシ: このメトリックは、RDSインスタンスがトランザクションを実行するのに必要な平均期間を示します。 単位:ミリ秒。
テストテーブルスキーマ
デフォルトでは、sysbenchは次のテーブルスキーマを使用します。
テーブル 'sbtest8' の作成 (
'id' int NOT NULL AUTO_INCREMENT、
'k' int NOT NULL DEFAULT '0',
'c' char(120) NOT NULL DEFAULT ''、
'pad'char (60) NOT NULL DEFAULT ''、
主要なキー ('id') 、
キー 'k_8 ' ('k')
) エンジン=InnoDB AUTO_INCREMENT=100001デフォルト料金=utf8mb3
テスト手順
このテストでは、テーブル列を暗号化して、さまざまなシナリオでRDSインスタンスのパフォーマンスに対するTDEの影響を分析します。
RDSインスタンスを作成します。 詳細については、「ApsaraDB RDS For MySQLインスタンスの作成」をご参照ください。
RDSインスタンスのデータベースとアカウントを作成します。 詳細については、「ApsaraDB RDS For MySQLインスタンスのデータベースとアカウントの作成」をご参照ください。
Linuxを実行するECSインスタンスで次のコマンドを実行し、MySQLクライアントをインストールします。
CentOSオペレーティングシステムを使用している場合は、
sudo yum install mysql
コマンドを実行します。Ubuntuオペレーティングシステムを使用している場合は、
sudo apt-get update
コマンドを実行してから、sudo apt install mysql-server
コマンドを実行します。
MySQLコマンドラインツールを開き、次のコマンドを実行してRDSインスタンスに接続します。
mysql -h <RDSインスタンスのエンドポイント> -u <ユーザー名> -P <ポート番号> -p <パスワード>
説明RDSインスタンスのエンドポイントとポート番号を取得する方法の詳細については、「インスタンスエンドポイントとポートの表示と管理」をご参照ください。
RDSインスタンスを終了し、sysbenchを使用してテストデータを読み込みます。
説明テストでは、128のテーブルがsysbenchを使用してロードされ、各テーブルには100,000行のデータレコードが含まれます。 次の例では、oltp_read_writeモデルが使用されています。
テストでは、スレッドの数は16です。 1、8、16、32、64、128、256などの実際の番号に置き換えます。
sysbench-db-driver=mysql-host=[データベースサーバーホスト]-mysql-port=[データベースサーバーポート]-mysql-user=[データベースユーザー名]-mysql-password=[データベースユーザーパスワード]-mysql-db=testdb-table_size=1000000-tables=128 -- threads=16-time=60 oltp_read_write
カスタムテストスクリプトを実行します。
sysbench-db-driver=mysql-host=[データベースサーバーホスト]-mysql-port=[データベースサーバーポート]-mysql-user=[データベースユーザー名]-mysql-password=[データベースユーザーパスワード]-mysql-db=testdb-table_size=1000000-tables=128 -- threads=16-time=60 oltp_read_wrun
データを削除します。
sysbench-db-driver=mysql-host=[データベースサーバーホスト]-mysql-port=[データベースサーバーポート]-mysql-user=[データベースユーザー名]-mysql-password=[データベースユーザーパスワード]-mysql-db=testdb-table_size=1000000-tables=128 -- threads=16-time=60
テストシナリオ1: 4コアと16 GBのメモリを提供し、TDEを有効にする前と後のローカルディスクを使用するRDSインスタンスのパフォーマンスの比較
テストデータ
異なるモデルが使用されている場合のRDSインスタンスのパフォーマンストレンドチャート
CPU
パフォーマンスデータの概要
rds_ssd_4c16g_tde_off[3]: TDEが無効になっているRDSインスタンス。
rds_ssd_4c16g_tde_on[2]: TDEが有効になっているRDSインスタンス。
テストシナリオ2: 8コアと32 GBのメモリを提供し、TDEを有効にする前と後のローカルディスクを使用するRDSインスタンスのパフォーマンスの比較
テストデータ
異なるモデルが使用されている場合のRDSインスタンスのパフォーマンストレンドチャート
パフォーマンスデータの概要
rds_ssd_8c32g_tde_off[11]: TDEが無効になっているRDSインスタンス。
rds_ssd_8c32g_tde_on[12]: TDEが有効になっているRDSインスタンス。