Upgrade to Pro — share decks privately, control downloads, hide ads and more …

jaws_n_20181212.pdf

hmatsu47
December 12, 2018

 jaws_n_20181212.pdf

hmatsu47

December 12, 2018
Tweet

More Decks by hmatsu47

Other Decks in Technology

Transcript

  1. re:Invent 2018 前 Aurora Serverless Database with the New Data

    API https://aws.amazon.com/jp/about-aws/whats- new/2018/11/aurora-serverless-data-api-beta/ Aurora PostgreSQL Serverless (Preview) https://aws.amazon.com/jp/about-aws/whats- new/2018/11/sign-up-for-the-preview-of-amazon-aurora- postgresql-serverless/ 今⽇はこれらのネタは関係ありません。
  2. 内容 PostgreSQL では、共有バッファでデータのキャッシュとダー ティーページの管理などを⾏う MySQL ではバッファプール MySQL のバッファプールとは違い、PostgreSQL の共有バッ ファは⼤きくしすぎてはいけない(らしい)

    全メモリ容量の 1/4 くらいまでにとどめておく 共有バッファから溢れた分について、OS のディスクキャ ッシュでフォローしてもらう思想(らしい) Aurora PostgreSQL 互換版では、フェイルオーバーしたときに 共有バッファと OS のディスクキャッシュは両⽅とも⽣きのこ るの︖ 実験︕
  3. ここで RDBMS の仕組みについて⼤雑把に補⾜ データの更新があった場合、 先⾏ログ(Write Ahead Log︓WAL)をシーケンシャル Write でディスクに記録 データページそのものはメモリ上のバッファ/キャッシ

    ュに記録するだけですぐにはディスクに書き出さない (ランダム Write の抑制) ある程度変更(ダーティーページ)が溜まったところで まとめて書き出す(チェックポイント処理) MySQL のバッファプールや PostgreSQL の共有バッファはこ の⽤途にも使われている
  4. ところで Aurora の仕組みは︖ データの更新があった場合、 WAL(Redo Log)をストレージノードとクラスタの Reader(レプリカ)に送り出す メモリ上のバッファ/キャッシュには記録するだけ メモリ上のバッファ/キャッシュはただのキャッシュであっ て、ダーティーページ管理には利⽤していない

    追記型のストレージ(SQL ノードとは別ノードで処理) キャッシュ外のデータはストレージノードへ取りに⾏く SQL ノードローカルのディスクは経由しない(ので OS の ディスクキャッシュが使われることはない) PostgreSQL 互換版も同じ(ぽい)
  5. 資料を漁ってみた あった https://www.slideshare.net/AmazonWebServices/deep- dive-on-the-amazon-aurora-postgresqlcompatible- edition-dat402-reinvent-2017 P.29 〜 30 「No Double

    Buffering」 Aurora PostgreSQL 互換版では全メモリ容量の 3/4 を共有 バッファに取る仕様(⼆重のバッファリングはしない)