[asin:B00P4WD4QG:detail]
運用管理
容量見積もり
テーブル
1ページあたりの格納行数
(8192 * fillfactor - 24) / (4 + 23 + 1行あたりの容量)
-
24
- ページヘッダ
-
4
- ラインポインタ
-
23
- テーブルのタプルヘッダ
- 実際にはアラインメントを考慮して24で計算したほうが正確説ある
インデックス
1ページあたりの格納行数
(8192 * fillfactor - 24 - 16) / (4 + 8 + 1行あたりの容量)
- テーブルとの違い
-
fillfactor
- internal node, root nodeではfillfactorが70%固定であることに留意する
-
16
-
special space
- Btreeインデックスでは、ページ自体が木構造
- 左右の兄弟の木を指していたりする
-
-
8
- インデックスのタプルヘッダ
-
インデックスを作成してからINSERTするのと、INSERTしてからインデックスを作成するのとでは容量が全然違う
- 前者ではinternal nodeのfillfactor 70%が効く
-
後者ではインデックス作成後にINSERTしないので、ガッツリ詰まる
- 前者のパターンで
REINDEX
した場合も同様
- 前者のパターンで
トランザクションID周回問題
- autovacuumオフでも、トランザクションIDが周回しそうになると下記のようなログで怒られる
WARNING: database "mydb" must be vacuumed within 177009986 transactions
HINT: To avoid a database shutdown, execute a database-wide VACUUM in "mydb".
GUC: Grand Unified Configuration パラメータ
- postgresql.confとかSETとかALTER SYSTEM SETとかでいつも書き換えてるアレ
障害対応
zerodamagedpages
-
ページヘッダが壊れたらこれしかない
- ページのデータは0埋めされて失われる
共有システムカタログ
- データベースクラスタ全体で共有するシステムカタログ
-
global/
配下- cf. ふつうのシステムカタログは
base/
配下
- cf. ふつうのシステムカタログは