(レポート) DAT405: Amazon Auroraディープダイブ #reinvent
ウィスキー、シガー、パイプをこよなく愛する大栗です。 re:Invent 2015のセッションをレポートします。
レポート
Amazon Auroraとは?
MySQL互換のデータベース 商用データベースの性能と可用性 簡単でオープンソースのコスト効果
SQLベンチマークの結果
昨年発表したように書き込みで107,000rps、読み込みで585,000rpsの性能を発揮します
- 接続数のスケーリング:8倍速い
- テーブル数のスケーリング:11倍速い
- データサイズのスケーリング:SYSBENCHは67倍速く、TPC-Cは136倍速い
- リードレプリカと動作する:500倍速い
どのように結果をアーカイブしているのか?
仕事を少なく
- IOを少なく
- ネットワークパケットを最小化
- 事前に結果をキャッシュ
- DBエンジンの負荷を軽減
より効率的に
- 非同期なプロセス
- 待ち時間の経路を削減
- ロックフリーなデータ構造を使用
- バッチ操作をまとめる
AuroraのIOトラフィック(データベース)
- IOの流れ: まとまったredoログレコード ー LSNで順序付する 適切なセグメントにシャッフルする ー 半順序 ストレージノードのまとまりと結果の書き込み
- 所見: 書き込みのみのredoログレコード:全て非同期 データブロックの書き込み無し(チェックポイント、キャッシュ置換) 6倍の書き込みだが、ネットワークトラフィックを9倍削減 ネットワークとストレージの異常なレイテンシへの耐性
- 性能: 27,378Kトランザクション -> 35倍増 100万トランザクション辺り950K I/O -> 7.7倍減少
AuroraのIOトラフィック(ストレージノード)
re:Inventでの新情報と思われます。
- IOの流れ:
- レコードを受信し、インメモリキューに追加
- 記録とACKを持続
- レコードを整理し、ログにギャップを特定
- 穴を埋めるすること仲間とゴシップ
- 新しいデータブロックのバージョンにログレコードを合体
- 定期的にステージログとS3に新しいブロックのバージョン
- 定期的にゴミは、古いバージョンを集めます
- 定期的に、ブロックにCRCコードを検証します
- 所見:
- すべてのステップは非同期であります
- 唯一の手順1と2は、フォアグラウンドレイテンシーパスに含まれています
- 入力キューは、(1ノード当たり、増幅されていない)には、MySQLより46X小さいです
- 遅延に敏感な操作を好みます
- アクティビティの急増に対して、バッファリングするためにディスクスペースを使用します
非同期グループコミット
- 最初の書き込みリクエストI/Oが書き込みをピックアップ
- アドバンストで耐久性のあるDBが最も速い保留中のACKをポイントアップアップします。
適応したスレッドプール
再接続のコネクションはアクティブなスレッドで多重化します カーネルスペースでepoll()がラッチ-フリーイベントキューを投入します 動的サイズのスレッドプール r3.8xlargeでの5,000以上の同時接続セッションを正常に処理します
AuroraのIOトラフィック(リードレプリカ)
- マスタからレプリカへredo情報を送ります。
- レプリカ派ストレージを共有しています。書き込みを行いません。
- キャッシュされたページはredoが適用済みです。
- シベてコミットするすぐに読み込めます。
ストレージノードの可用性
- 読み取り/書き込みのためのクォーラムシステム:レイテンシトレラント
- 欠損を埋めるためのPeer-to-peerのゴシップレプリケーション
- S3への継続的バックアップ(11ナインの耐久性を持つ設計)
- データブロックの継続的洗浄
- ノードとディスクの修復のために継続的なモニタリング
- 素早く負荷を調整したり修復するために10GBのセグメント
- クォーラム変更で書き込み停止をしません
インスタンスの障害復旧
Auroraではディスク読込の一環でオンデマンドのredoログを適用します 並列、分散、非同期で行う 起動時に再実行しない
存続可能なキャッシュ
キャッシュプロセスをDBプロセスの外にすることでDBプロセスのさ再起動時にもキャッシュが残ります インスタントキャッシュリカバリと存続可能なキャッシュで、DBの障害から迅速かつ簡単に回復します
より速い予測可能なフェイルオーバー
AuroraとMariaDBドライバの場合は障害検出に15〜20秒、リカバリに3〜20秒でアプリケーションを実行できます。
さいごに
日本でもblackbeltなどでAuroraの最新情報が公開されますが、re:Inventではストレージレイヤの内部アーキテクチャが新情報として出てきました。日本でもAuroraが使用可能になったので、ドンドン使って行きたいと思います。