PostgreSQL ガイドとチュートリアル

ここにあるのは Postgres そのものについてのガイドです。どの記事も本番環境で実際に起こる問題から始まり、psql にそのまま貼り付けられる SQL で再現し、確認できる対処法で終わります。対象は Relyt One が動かしている PostgreSQL 17 で、内容の多くは最近の Postgres 全般にも当てはまります。下の読む順番に沿って読み進めても、目の前の問題に合うガイドから読んでもかまいません。

11 件の記事

まずはここから

おすすめの順番で 4 本のガイドを並べています。テーブルをロックせずにスキーマを変更する方法、クエリにインデックスを使わせる方法、行レベルセキュリティの抜け穴をふさぐ方法、そして Postgres 18 から移るときに変わる点です。

  1. PostgreSQL の ALTER TABLE でテーブルがロックされる理由:マイグレーションごとのロックと安全な実行方法1 行の ALTER TABLE でテーブルへのクエリがすべて止まるのはなぜか。PostgreSQL 17 でよく使うマイグレーションがそれぞれどのロックを取り、どれがテーブルを書き換えるのかを示し、本番を止めないための lock_timeout、NOT VALID、CONCURRENTLY のパターンを解説します。
  2. PostgreSQL でインデックスが使われない 7 つの原因と対処法(EXPLAIN の出力つき)インデックスを作成したのに EXPLAIN が Seq Scan のまま。PostgreSQL がインデックスを使わない 7 つの原因(関数、型キャスト、ワイルドカード、選択性、古い統計情報、カラム順、小さなテーブル)を、再現手順と対処法つきで解説します。
  3. 行レベルセキュリティが「開いたまま」になる 5 つのケース行レベルセキュリティは、WHERE 句の書き忘れに対する最良の防御ですが、気づかないうちに適用されなくなることがあります。PostgreSQL 17 で RLS が開いたままになる 5 つのケースを、再現手順、対処法、CI で検出するカタログクエリとともに紹介します。
  4. Postgres 18 から来た方へ:Postgres 17 で変えるべきことRelyt One は PostgreSQL 17 で動いています。スキーマや習慣が Postgres 18 由来の場合に、17 で失敗するもの、代わりに書くべきもの、18 で取得したダンプを読み込む方法を紹介します。すべてのスニペットは両方のバージョンで実行しました。

Postgres タグのその他の記事

RSS フィード

英語版のみの記事もあります。 英語の記事