SQLは一通り書けるのに、autovacuumが追いつかずテーブルサイズが増え続ける理由を説明できない。パラメータを1つ変えるよう指示されても、効果を根拠づけられない。書店で運用本を開いても、設定値の一覧を読み流して終わる。この状態はSQLの学習不足ではなく、PostgreSQLの書籍が扱う層を見ないまま1冊目を選んだ結果として起きます。
この記事は「PostgreSQL本おすすめ|レベル別の読む順番」の一部を、話題を絞って書き直したものです。3か月でSQLから運用までを一周する読む順番やOSS-DB Silver・Goldの対策範囲は、ブログの完全版にまとめています: PostgreSQL本おすすめ|レベル別の読む順番
PostgreSQLの書籍は3層に分かれる
第1層はSQLとリレーショナルモデルです。SELECT、JOIN、集約からサブクエリ、ウィンドウ関数、CTE、正規化とテーブル設計までを扱います。この層の知識はPostgreSQL固有ではなく、MySQLやOracleでもほぼそのまま通用します。PostgreSQL専用の本を選ぶ必要はありません。
第2層は内部構造とアーキテクチャです。MVCCにおけるタプルのxmin/xmaxと可視性判定、WALとチェックポイント、VACUUMとFREEZE、共有バッファとOSページキャッシュ、プランナの推定ロジック、ロックの種類と競合がここに入ります。エンジン固有の知識であり、「UPDATEしただけでテーブルが太るのはなぜか」「インデックスがあるのにSeq Scanが選ばれるのはなぜか」に答えられるのは第2層だけです。
第3層が運用・チューニング・トラブルシュートになります。postgresql.confのパラメータ設計、バックアップとPITR、レプリケーション、監視項目、スロークエリの特定、障害時の切り分け手順。第2層を理解していないと、第3層の本は設定値の暗記リストにしか見えません。
実務でつまずく人の多くは、第1層だけを固めた状態で第3層の作業を任されています。第2層が抜けているため、パラメータを変えても効果を説明できず、VACUUM周りの問題で手が止まります。層の違う本どうしで優劣を論じても、答えは出ません。
本を比べる4つの軸
| 軸 | 確認方法 | 判断基準 |
|---|---|---|
| 対象レイヤ | 目次でJOINやウィンドウ関数が中心ならSQL層、MVCCやWAL、VACUUMが章になっていれば内部構造層、パラメータやバックアップ、監視が並べば運用層 | いま困っている層と一致しているか |
| 前提知識 | 「前提」「対象読者」の記述と、psqlの操作説明の有無 | 説明のない前提は自力で埋める覚悟が必要 |
| 対応バージョン | タイトルや奥付の対応バージョン、発行年 | 層ごとに後述の基準で判断する |
| ハンズオン量 | サンプルDBの提供、コマンド実行例の密度、環境構築の章の有無 | 手を動かすなら実行例の多いものを選ぶ |
バージョン差が実務に直結する領域
対応バージョンの扱いが一番誤解されやすい点です。SQL構文とリレーショナルモデルの本は、10年前の版でも大半が通用します。一方で次の領域はバージョン差が運用設計に直結します。
VACUUMとautovacuumではautovacuum_vacuum_insert_thresholdがPostgreSQL 13で追加され、INSERT中心のテーブルでもautovacuumが動く条件が増えました。古い本の「追記のみのテーブルはVACUUM不要」という前提では、説明が足りません。インデックスはB-treeの重複排除(13)とボトムアップ削除(14)によって肥大化の挙動が改善しており、REINDEXを前提にした運用設計は見直しが必要になります。バックアップではpg_basebackupの増分バックアップとpg_combinebackup(17)により、取得方式の選択肢そのものが増えました。監視と統計ビューではpg_stat_io(16)やEXPLAIN (WAL)(13)が切り分けに使えます。SQL構文にもMERGE(15)などが追加されています。
したがって第1層の本は版が古くても投資効率が高く、第2層と第3層はできるだけ新しい版を選ぶのが基本方針です。ただしMVCCやWALの原理そのものは変わりません。第2層については、少し古いが評価の高い本を読み、差分をリリースノートと公式ドキュメントで埋める戦略も現実的と言えます。どのバージョンで何が変わったかは、公式ドキュメントとリリースノートで確認してください。
元記事で扱っている内容
- 3か月でSQLから運用までを一周する独学ロードマップと、読む順番の組み立て方
- レベル別・目的別のおすすめ本と、1冊目の選び方
- OSS-DB Silver・Goldの対策を書籍だけで進められるかどうかの線引き
- 本だけでは埋まらない部分を公式ドキュメントと検証環境で補う進め方
- 学習の進め方についてのよくある質問