# CMU DB 13. Query Execution II
tags: CMU DB
授業
久々!
めっちゃ久々に授業を受ける.まぁ色々あったのですが,3月中に終わらせられるように爆速で視聴していきたいです()
query executionについて先週は暑かった.
今回は複数スレッドでのquery executionについてやるっぽい.並列処理についてやるっぽい.
parallel execution
- パフォーマンスがよくなる
- 所有権の総コストが減る
parallet vs distributed
parallel DBMS
- 物理的にそれぞれの機械が近い
- 高速でそれぞれが繋がっている
- 通信は安く,信頼できる
- distributed DBMS
- 物理的に遠い
- 比較的遅い通信でつながっている
- 通信の費用と問題は無視できる
process models
DBMSのprocess 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
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はこれに対応している.
正しく処理するのは難しい.
感想
中間試験前だからか軽かったです.
並行処理は大事ですよね(適当).