10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-02-10

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関連投稿記事へのリンクを集めました。

10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?