PostgreSQL 高度技術者育成テキスト 章末問題メモ
LPI-Japan OSS-DB Gold 認定教材 PostgreSQL 高度技術者育成テキスト
- 作者:河原 翔
- 発売日: 2014/10/27
- メディア: オンデマンド (ペーパーバック)
運用管理
容量見積もり
テーブル
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インデックスでは、ページ自体が木構造
- 左右の兄弟の木を指していたりする
- special space
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とかでいつも書き換えてるアレ
障害対応
zero_damaged_pages
- ページヘッダが壊れたらこれしかない
- ページのデータは0埋めされて失われる
共有システムカタログ
- データベースクラスタ全体で共有するシステムカタログ
global/
配下- cf. ふつうのシステムカタログは
base/
配下
- cf. ふつうのシステムカタログは