PostgreSQLのコードを読む話(1)
昨年末からちびちびとPostgreSQLのコードを読み始めた。
ちびちび読んでいるので、次読むときにどこ読めばいいか忘れるのでその記録。
とは言ってもそんなに C に堪能ではないので、結構飛ばしつつ流れを追っている段階。。。
まずはインデックスとかDBの物理ファイルあたりにたどりつくのが目標。
前回までに読んだところ
- src/backend/main/main.c
コマンドでサーバーを起動したときの開始ポイント。まずはここから - src/backend/postmaster/postmaster.c#PostmasterMain
マスタープロセスの起動部分。マスタープロセスから起動時に各種バックエンドプロセスが、コネクション接続時にバックエンドプロセスがフォークされる模様
今回読んだところ
- src/backend/tcop/postgres.c#PostgresMain
コネクション毎にpostmasterからフォークして作成されるバックエンドプロセスのメイン部分。コネクションを通してクエリを受け取ったりする。。。はず
次回
- https://github.com/postgres/postgres/blob/master/src/backend/tcop/postgres.c#L3969
ここから。バックエンドでコマンドを受け取って種類ごとにゴニョゴニョするっぽい。
疑問
- 次回読み始める箇所のコマンドにあたるものの位置づけがまだ把握できていない(queryの他にparseとかある。parseは何のparse?)
- ディレクトリ名のtcopってなんだ?
- DBの物理ファイルとかバッファプール関連の初期化箇所をすっ飛ばしたっぽい。。。
- Windows の場合は fork する代わりに exe ファイルを起動しまくっている?
役立つもの
- milkode - とりあえず選択して Shift + S!
- 内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 - 概要がわかる。よい
- なるほどUnixプロセス ― Rubyで学ぶUnixの基礎 - fork とか signal とかめっちゃでてくる!
コメント
コメントを投稿