書籍名「内部構造から学ぶ POstgreSQL 設計運用計画の鉄則」
改訂3版
上原一樹、勝俣智成、佐伯昌樹、原田登志
技術評論社
読もうと思った動機
仕事でDB設計パフォーマンスの計測をする機会があり、知識不足を実感したため
本書では内部構造、監視計画、監視運用が書かれており学ぶに良い本だと思ったため。
印象に残った部分
公式ドキュメントで関係ありそうな部分も提示しておきます。
バージョンは特に統一してません!
p38 サーバプロセス
正直あんま理解できなかったのですね。
せめて単語だけでも理解するよう努めます。
マスタサーバプロセス
PostgreSQLを制御するさまざまなプロセス(バックグランドプロセス)をforkして起動する親プロセス
fork プロセスを開始(fork)します。
https://www.postgresql.jp/document/8.1/html/tutorial-arch.html
接続の確立
https://www.postgresql.jp/docs/9.4/connect-estab.html
ライタ
共有バッファ内の更新されたページを、対応sるデータファイルのブロックに書き出すプロセス
20.4.5. バックグラウンドライタ
https://www.postgresql.jp/document/16/html/runtime-config-resource.html#RUNTIME-CONFIG-RESOURCE-BACKGROUND-WRITER
WALライタ
WALライタプロセスは、WAL(Write Ahead Logging)をファイルに書き出すプロセスです。
WALはPostgresSQLの更新情報が記録されたログで、リカバリ時やストリーミングレプリケーションで使用される非常に重要な情報
チェックポインタ
チェックポイントを設定に従って自動的に実行するプロセスです。
チェックポイントは、PostgreSQLがクラッシュした時に、どの箇所からリカバリ処理を行うのか示すポイント
自動バキュームランチャと自動バキュームワーカ
自動バキュームを制御/実行するプロセスです。
自動バキュームランチャーが自動バキュームワーカを起動する
統計情報コレクタ
データベースの活動状況に関する統計情報を一定間隔で収集するプロセス。
p41 クライアントとサーバの接続 通信
問い合わせの実行
データベースからデータを取り出す処理、または、取り出すためのコマンドを問い合わせと言います。
https://www.postgresql.jp/document/8.0/html/queries.html
パーサ
字句解析、構文解析を実行する。
パーサー
https://www.postgresql.jp/docs/9.4/textsearch-parsers.html
一般的なパーサー
https://e-words.jp/w/%E3%83%91%E3%83%BC%E3%82%B5.html
字句解析
SQLがどういったトークン(構文の単位)から構成されるか解析すること
構文解析
字句解析で分解された字句の並びがPostgreSQLで扱えるSQLの記述規則に合っているかを検査して
問い合わせツリーを生成します。
リライタ
SQLを実行するデータベースにルール(SQLを書き換える規則)が定義されている場合、
そのルールを参照してリライタで問い合わせツリーを修正します。
プランナ
リライタで修正された問い合わせツリーを本に最適な実行計画を生成します。
エグゼキュータ
プランナで決定された実行計画に従って必要な行の集合を抽出します。
実践できること or 感想
感想
自分の知りたい情報は集まっており、勉強になった部分が多いです。
知らない単語が多かったのでその把握がメインでしたね。
監視、実行計画の部分も勉強になったので後で読書感想書きます。
実践できること
p6プロセス構成、p10のメモリ構成をplantumlで模写する。(配置図)
p41 クライアントとサーバーの接続、p43問い合わせの実行をplantumlで書く。(シーケンス図の予定)
参考
富士通 Postgresql アーキテクチャ
https://www.fujitsu.com/jp/products/software/resources/feature-stories/postgres/article-index/architecture-overview/