
(レポート) DAT405: Amazon Auroraディープダイブ #reinvent
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ウィスキー、シガー、パイプをこよなく愛する大栗です。 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が使用可能になったので、ドンドン使って行きたいと思います。










