このトピックでは、ApsaraDB RDS for MySQL インスタンスで Transparent Data Encryption (TDE) を有効にすることが、CPU とメモリの使用量を含むパフォーマンスにどのように影響するかを分析します。このレポートを参考に、TDE がご利用のワークロードに適しているかどうかを評価してください。
結果のまとめ
TDE を有効にすると、ApsaraDB RDS for MySQL インスタンスで測定可能なパフォーマンスオーバーヘッドが発生し、CPU 使用率が増加します。
低い同時実行数では、パフォーマンスオーバーヘッドはより大きくなり、最大で 20% に達します。高い同時実行性では、I/O 統合などの要因により、オーバーヘッドは 5% 未満に減少します。
4 コア、16 GB のインスタンスでは、TDE を有効にすると、暗号化されたテーブルにアクセスする際の CPU 使用率が 0.06% から 4.22% 増加します。8 コア、32 GB のインスタンスでは、増加率は 0.12% から 2.86% です。
全体として、パフォーマンスへの影響は、
oltp_write_onlyやoltp_update_indexテストシナリオなどの書き込み集中型のワークロードで最も顕著です。
テスト環境
パラメーター | テストシナリオ 1 | テストシナリオ 2 |
リージョンとゾーン | 中国 (杭州) | |
ネットワークタイプ | Virtual Private Cloud (VPC) | |
ハードウェアアーキテクチャ | x86-64 | |
ストレージタイプ | ローカル SSD | |
CPU | 4 コア | 8 コア |
メモリ | 16 GB | 32 GB |
バッファープールサイズ | 12 GB | 24 GB |
最大 IOPS | 7000 | 12000 |
データベースエンジンバージョン | mysql80_8.0.28_20230610 | |
テストデータセットサイズ | 41 GB | |
ベンチマークツール
sysbench は、高いデータベース負荷の下でシステムパフォーマンスを評価するための、オープンソース、モジュール式、クロスプラットフォーム、マルチスレッド対応のベンチマークツールです。詳細については、sysbench ドキュメントをご参照ください。
主要メトリック
1 秒あたりのトランザクション数 (TPS):データベースが 1 秒あたりにコミットするトランザクションの数。
平均レイテンシー:単一のトランザクションを実行するための平均時間。ミリ秒 (ms) 単位で測定されます。
テストテーブルスキーマ
sysbench で使用されるデフォルトのテーブルスキーマは次のとおりです。
CREATE TABLE `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 '',
PRIMARY KEY (`id`),
KEY `k_8` (`k`)
) ENGINE=InnoDB AUTO_INCREMENT=100001 DEFAULT CHARSET=utf8mb3操作手順
ApsaraDB RDS for MySQL インスタンスを作成します。詳細については、「ApsaraDB RDS for MySQL インスタンスの作成」をご参照ください。
データベースとアカウントを作成します。詳細については、「データベースとアカウントの作成」をご参照ください。
ご利用の Linux ベースの ECS インスタンスに MySQL クライアントをインストールします。
CentOS の場合、
sudo yum install mysqlを実行します。Ubuntu の場合、
sudo apt-get updateを実行してからsudo apt install mysql-serverを実行します。
コマンドラインからご利用の ApsaraDB RDS for MySQL インスタンスに接続します。
mysql -h<endpoint> -u<username> -P<port> -p<password>説明インスタンスのエンドポイントとポートを確認する方法については、「インスタンスのエンドポイントとポートの表示と管理」をご参照ください。
データベースを終了し、sysbench を使用してテストデータを準備し、ロードします。
説明このテストでは、sysbench は 128 個のテーブルをロードし、各テーブルには 100,000 行のデータが含まれます。次のスクリプトでは、
oltp_read_writeテストモデルを使用します。サンプルコードでは、スレッド数を 16 に設定しています。必要に応じて、`--threads` パラメーターを 1、8、16、32、64、128、256 などの値に調整してください。
sysbench --db-driver=mysql --mysql-host=[database server host] --mysql-port=[database server port] --mysql-user=[database user name] --mysql-password=[database user password] --mysql-db=testdb --table_size=1000000 --tables=128 --threads=16 --time=60 oltp_read_write prepareベンチマークテストを実行します。
sysbench --db-driver=mysql --mysql-host=[database server host] --mysql-port=[database server port] --mysql-user=[database user name] --mysql-password=[database user password] --mysql-db=testdb --table_size=1000000 --tables=128 --threads=16 --time=60 oltp_read_write runテストデータをクリーンアップします。
sysbench --db-driver=mysql --mysql-host=[database server host] --mysql-port=[database server port] --mysql-user=[database user name] --mysql-password=[database user password] --mysql-db=testdb --table_size=1000000 --tables=128 --threads=16 --time=60 oltp_read_write cleanup
テストシナリオ 1:4 コア、16 GB のインスタンス
テストデータ
ワークロードモデル別のパフォーマンス


CPU 使用率

パフォーマンスデータの概要



rds_ssd_4c16g_tde_off[3]:TDE が無効になっている 4 コア、16 GB の ApsaraDB RDS for MySQL インスタンス。
rds_ssd_4c16g_tde_on[2]:TDE が有効になっている 4 コア、16 GB の ApsaraDB RDS for MySQL インスタンス。
テストシナリオ 2:8 コア、32 GB のインスタンス
テストデータ
ワークロードモデル別のパフォーマンス



パフォーマンスデータの概要



rds_ssd_8c32g_tde_off[11]:TDE が無効になっている 8 コア、32 GB の ApsaraDB RDS for MySQL インスタンス。
rds_ssd_8c32g_tde_on[12]:TDE が有効になっている 8 コア、32 GB の ApsaraDB RDS for MySQL インスタンス。