メインページ
提供: PostgreSQL Internals
本コンテンツは、2014年1月30~31日に筑波大学で開講された「情報システム特別講義D」における講義「Inside PostgreSQL Kernel」の内容を再構成、加筆・修正したものです。
- はじめに
- 本コンテンツについて
- 本コンテンツへのフィードバックについて
- アーキテクチャ概要
- PostgreSQLの構成要素
- PostgreSQLの基本的なアーキテクチャ
- SQL文の処理される流れ
- トランザクション管理
- トランザクション処理におけるACID特性
- 各レコードの可視性の管理
- Atomicity(原子性)の実装
- Consistency(一貫性)の実装
- Isolation(分離性)の実装
- トランザクション分離レベルの定義
- Durability(永続性)の実装
- チェックポイント
- メタデータ管理
- pg_controlファイル
- OID/XID/TID
- システムカタログ
- MVCCとストレージ構造
- テーブルファイル
- テーブルのページレイアウト
- データ型とデータサイズ
- インデックス(B-Tree)ファイル
- B-Tree(リーフ)のページレイアウト
- VACUUM処理
- インデックスとタプルの可視性
- TOASTテーブル
- Freespace Map(FSM)
- FSMの物理レイアウト
- Visibility Map(VM)
- VMの構造
- メモリ管理
- 共有メモリとローカルヒープ
- Memory Context
- 共有バッファと管理アルゴリズム
- ロック制御
- ロック
- 2-Phase Locking(2PL)
- デッドロックの検証と解消
- SpinLockとLWLock
- パース、リライト、オプティマイズ
- パース、リライト
- オプティマイザ統計情報
- よく利用されるオプティマイザ統計情報
- 実行コストの計算
- Seq scan/Index scan実行コスト例
- GEQO(遺伝的問い合わせ最適化)
- エグゼキュータ
- エグゼキュータの役割
- 結合処理
- Nested Loop Join
- Merge Join
- Hash Join
- インデックスの種類
- インデックスのアクセスメソッド
- B-Treeインデックスのタプル取得呼び出し
- B-Treeインデックスのアクセスメソッド
- B-Treeインデックスの構造
- B-Treeデモ(1/2)
- B-Treeデモ(2/2)
- GINインデックス
- PostgreSQLの拡張
- PostgreSQLを拡張する方法
- Hookによる拡張
- GiSTによるインデックスの拡張
- 参考文献