Neunomizuの日記

俺だけが俺だけじゃない

# CMU DB 13. Query Execution II

tags: CMU DB

授業

久々!

めっちゃ久々に授業を受ける.まぁ色々あったのですが,3月中に終わらせられるように爆速で視聴していきたいです()

query executionについて先週は暑かった.

今回は複数スレッドでのquery executionについてやるっぽい.並列処理についてやるっぽい.

  • parallel execution

    • パフォーマンスがよくなる
    • 所有権の総コストが減る
  • parallet vs distributed

    • データベースはDBMSの異なる面を改善するために複数の資源に渡って広がっている
    • 一つのDBMSでも並列・分散DBMSでも同じ結果がでないと行けない
  • parallel DBMS

    • 物理的にそれぞれの機械が近い
    • 高速でそれぞれが繋がっている
    • 通信は安く,信頼できる
  • distributed DBMS
    • 物理的に遠い
    • 比較的遅い通信でつながっている
    • 通信の費用と問題は無視できる

process models

DBMSprocess modelは平行の要求をどう支持するかを定義している.

clientに変わってタスクを処理する単位をworkerという

  • process per dbms worker
    • それぞれのworkerは各OSプロセスである.
    • OS schedulerと共有メモリに依存する
  • process pool
    • workerはプール内の自由なプロセスを使う
    • OS schedulerと共有メモリに依存する
  • thread per dbms worker
    • DBMS自身でscheleを管理する

multi-threadedだといくつかの利点があるcontext switchあたりのoverheadが少なく共有メモリを管理する必要がない.

scheduling

DBMSはクエリについ,どこでいつどうやってそれを実効するかを決める.

OSはいつもよりも多くのことを知っている必要がある.(task, CPU, 出力をどこで保管するかなど)

execution parallelism

  • inter vs intra query parallelism
    • inter-query
      • 異なるクエリが並行処理される
      • スルーアウトを増やし,遅延を減らす
      • 複数のっクエリを同時に実行することを許す
      • クエリが読むだけならば簡単だが,書き込みがある場合は難しい.(lecture16 で扱う)
    • intra-query
      • 並列に単一のクエリ処理が実行される
      • 長期間働くクエリでは遅延を減らす
      • producer/consumerパラダイムで考える
      • すべての関係演算子には並列ルゴリズムがある.

intra-query parallelism

  • intra-operator(horizonal)
    • 比較演算子のそれぞれをfragmentに分けて,それぞれを並列に計算して合体する.
    • gather
      • 複数のworkerの結果を合成する
    • repartition
      • 複数の入力を複数の出力に横断して再合成する
    • distribute
      • 単一の入力を複数に分割する
  • inter-operator(vertical)
    • パイプラインする
  • bushy
    • 異なるsegmentから複数の演算子を実行する

ディスクがいつも主なボトルネックな場合,並行処理は助けにはならない

I/O parallelism

複数のストレージ装置に渡ってDBMSを分ける.

  • storage appliances
  • RAID configuration

これはDBMSにとって明らか.

  • partitioning

    • 単一の論理テーブルをバラバラな物理的なsegmentに分ける
    • 理想的にはpartitioningはアプリケーションには明らか
  • vertical partitioning

    • 個別の場所にテーブルのattributeを保管する.
    • もともとのrecordを再構築できるための情報を保管する必要がある.
  • horizontal partitioning
    • テーブルのtuplesをバラバラのsegmentにする.partitioning keyに応じて

Conclusion

並行処理は大事

(ほぼ)すべてのDBMSはこれに対応している.

正しく処理するのは難しい.

感想

中間試験前だからか軽かったです.

並行処理は大事ですよね(適当).