2018/01/13追記:
現状では暗号化の有無による性能差はほとんどなくなりました。
- Amazon AuroraでR4インスタンスを試してみる ※2017/10/31時点
- MeltdownとかSpectreとか騒ぎがあったので、Amazon Aurora(MySQL互換)R4インスタンス再テスト(mysqlslap) ※2018/01/08時点
- 「AWS、またパッチ当てたってよ」と聞いたので3度目のAurora(MySQL互換)R4テスト(mysqlslap) ※2018/01/13時点
以前、MySQL 5.7の透過的データ暗号化についての記事を書きましたが、Amazon RDS for MySQLやAmazon Auroraでそれに近い機能としてKMS(Key Management Service)を利用したリソースの暗号化があります。
これらのうち、Amazon Aurora(最近「RDS for」が外れました)について、暗号化の有無でパフォーマンスが変化するかどうかを、mysqlslapを使って確認してみました。
※当然ですが、結果はワークロードによって大きく変化する場合があります。参考程度に見てください。
設定
インスタンスを作るときに**「暗号を有効化」を「はい」**にするだけ(必要ならマスターキーも選択。暗号キーのローテーションをするなら個別に生成してデフォルト以外のものを選択する)です。
少し古いですが、クラスメソッドさんの説明記事がわかりやすいです。
[新機能]RDS for Auroraで暗号化がサポートされました
なお、DB(クラスター)パラメータグループでは、デフォルトから以下の項目のみ設定を変更しています(以下のパフォーマンス調査には直接関係ありませんが、utf8mb4を扱うことを想定しています)。
- innodb_file_per_table = 1 (ON)
- innodb_file_format = Barracuda
- innodb_large_prefix = 1 (ON)
- binlog_format = MIXED (バイナリログありの場合)
テスト内容
以下の組み合わせでmysqlslapを実行してみました。
- 暗号化 あり/なし
- バイナリログ あり/なし
- インスタンスタイプ db.r3.large/db.r3.xlarge
mysqlslapの指定パラメータは、簡単なテーブルを自動生成し、150スレッド・2000クエリで読み書きするものです。
$ mysqlslap --auto-generate-sql --auto-generate-sql-guid-primary --engine=innodb --number-int-cols=20 --number-char-cols=20 --concurrency=150 --auto-generate-sql-write-number=2000 --auto-generate-sql-execute-number=2000 --auto-generate-sql-load-type=mixed -u 【ユーザ名】 -h 【クラスタエンドポイント】 -p
結果
- db.r3.largeの場合
暗号化 | バイナリログなし | バイナリログあり |
---|---|---|
なし | 57.062 | 59.692 |
あり | 57.146 | 65.418 |
- db.r3.xlargeの場合
暗号化 | バイナリログなし | バイナリログあり |
---|---|---|
なし | 36.087 | 42.576 |
あり | 34.880 | 46.457 |
バイナリログがない場合、暗号化の有無はほとんどパフォーマンスに影響を与えていないようです。
db.r3.xlargeの時は数値が逆転してしまっていますが、計測誤差または外部環境の影響が考えられます。
バイナリログがある場合は、I/Oのパターンが変わるせいか、暗号化のオーバーヘッドが少し生じました。
db.r3.large・db.r3.xlargeともに、9~10%程度でした。
※より大きなインスタンスタイプの場合は結果が違う可能性もあります。
まとめ
「オーバーヘッドが(概ね)10%以内」は、結果だけをみればMySQL 5.7の透過的データ暗号化とほぼ同じです。
おそらく、CPUのAES-NI命令を使ってブロック(ページ)の暗号化/復号を行うタイプの処理になるので、あまり差がないのだと思います。
但し、Amazon Aurora(RDSも)の場合、テーブル領域だけでなく、ストレージに保存されるデータ全体が暗号化される点が違います。
なお、通信経路の暗号化は、RDS(MySQL)と同じ方法で行うことができます(JDBCを使う場合はこちら)。
【おまけ】
Amazon Aurora関連投稿記事へのリンクを集めました。