Help us understand the problem. What is going on with this article?

Amazon Aurora データ暗号化時のパフォーマンス

More than 3 years have passed since last update.

2018/01/13追記:
現状では暗号化の有無による性能差はほとんどなくなりました。


以前、MySQL 5.7の透過的データ暗号化についての記事を書きましたが、Amazon RDS for MySQLAmazon Auroraでそれに近い機能としてKMS(Key Management Service)を利用したリソースの暗号化があります。

Amazon RDS リソースの暗号化

これらのうち、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
$ 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関連投稿記事へのリンクを集めました。

hmatsu47
名古屋で士業向けWebサービスのインフラ構築管理、たまにアプリケーション開発をやっています。 業務利用しているもの、個人研究など、気長にのんびり投稿していきます。ニッチ狙いが多めです。 IPA RISS(001158)・NW・DB/日商・大商2級コレクター?(簿記・ビジネス法務・ビジネス会計)。
https://hmatsu47.hatenablog.com/
infra-workshop
インフラ技術を勉強したい人たちのためのオンライン勉強会です
https://wp.infra-workshop.tech/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away