suer TIL
eye catch
【PostgreSQL】部分インデックス(Partial Index)でWHERE条件付きの軽量インデックスを作る
部分インデックスとは CREATE INDEXにWHERE句を付けると、テーブルの一部の行だけを対象にしたインデックスを作成できる。これを部分インデックスと呼ぶ。全行を対象にした通常のインデックスと比べてサイズが小さくなり、更新時のオーバーヘッドも減らせる。
DATABASE
2026-07-23 2026-07-23
eye catch
【PostgreSQL】pg_stat_user_indexesで使われていないインデックスを見つける
pg_stat_user_indexesとは pg_stat_user_indexesは、インデックスごとの使用状況を集計するビューである。idx_scan列でそのインデックスが何回検索に使われたかを確認できる。
DATABASE
2026-07-22 2026-07-22
eye catch
【PostgreSQL】REINDEX CONCURRENTLYでインデックスを無停止で再構築する
インデックスの再構築が必要になる場面 インデックスはUPDATEやDELETEを繰り返すと、削除済みの領域を残したまま肥大化することがある。 SELECT pg_size_pretty(pg_relation_size('idx_accounts_balance')); pg_size_pretty ---------------- 1936 kB 同じ行を3回更新すると、インデックスのサイズが4倍近くに膨らむ。
DATABASE
2026-07-22 2026-07-22
eye catch
【PostgreSQL】CREATE INDEX CONCURRENTLYでサービス無停止でインデックスを作成する
通常のCREATE INDEXが取得するロック 通常のCREATE INDEXは対象テーブルにShareLockを取得する。ShareLockはINSERT・UPDATE・DELETEが取得するRowExclusiveLockと競合するため、インデックス作成が完了するまで書き込みがブロックされる。
DATABASE
2026-07-22 2026-07-22
eye catch
【PostgreSQL】INCLUDE句でIndex Only Scanを実現する
Index Only Scanとは Index Only Scanはインデックスだけを読んでテーブル本体(ヒープ)にアクセスせず結果を返す実行方式である。テーブルへのアクセスが不要な分、通常のIndex Scanより高速になる。
DATABASE
2026-07-22 2026-07-22
eye catch
【PostgreSQL】pg_stat_statementsで重いクエリを特定する
pg_stat_statementsの有効化 pg_stat_statementsは、実行されたSQL文ごとに実行回数や実行時間を集計する拡張機能である。postgresql.confのshared_preload_librariesに追加し、PostgreSQLを再起動してからCREATE EXTENSIONで有効化する。
DATABASE
2026-07-22 2026-07-22
eye catch
【PostgreSQL】EXPLAIN (ANALYZE, BUFFERS)でキャッシュヒット率を確認する
BUFFERSオプションとは EXPLAINにBUFFERSオプションを付けると、クエリの実行中に読み込んだブロック数が表示される。ANALYZEと併用することで、実行計画の各ノードがどれだけ共有バッファ(キャッシュ)を使ったかを確認できる。
DATABASE
2026-07-22 2026-07-22
eye catch
【PostgreSQL】EXPLAIN ANALYZEの読み方の基本
EXPLAIN ANALYZEとは EXPLAINはクエリの実行計画を表示するコマンドである。ANALYZEオプションを付けると、実際にクエリを実行し実行時間や実際の処理件数も表示する。
DATABASE
2026-07-21 2026-07-22
eye catch
【PostgreSQL】pg_stat_activityで実行中クエリとロック待ちを確認する
実行中のクエリを確認する PostgreSQLで現在実行中のクエリを確認するにはpg_stat_activityビューをSELECTする。 SELECT pid, usename, state, query, query_start FROM pg_stat_activity; pid | usename | state | query | query_start -----+----------+--------+---------------------------------------------------------------------------------------+------------------------------- 94 | postgres | active | BEGIN; UPDATE accounts SET balance = balance - 100 WHERE id = 1; SELECT pg_sleep(30); | 2026-07-21 12:56:41.72517+00 pg_stat_activityには以下のような主要なカラムが含まれる。
DATABASE
2026-07-21 2026-07-21
eye catch
【Hugo】sectionページを使ってプライバシーポリシーページを作る
実現したいこと ブログにプライバシーポリシーのような固定ページを追加したいとする。記事一覧は不要で、本文だけを表示したいが、タイトルや日付、TOCなど通常記事と同じ見た目には揃えたい。
HUGO
2026-07-20 2026-07-20
  • ««
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
  • »»
AUTHOR
author image
suer
ふつうのプログラマ
LATESTS
eye catch
【PostgreSQL】部分インデックス(Partial Index)でWHERE条件付きの軽量インデックスを作る
DATABASE
2026-07-23 2026-07-23
eye catch
【PostgreSQL】pg_stat_user_indexesで使われていないインデックスを見つける
DATABASE
2026-07-22 2026-07-22
eye catch
【PostgreSQL】REINDEX CONCURRENTLYでインデックスを無停止で再構築する
DATABASE
2026-07-22 2026-07-22
eye catch
【PostgreSQL】CREATE INDEX CONCURRENTLYでサービス無停止でインデックスを作成する
DATABASE
2026-07-22 2026-07-22
eye catch
【PostgreSQL】INCLUDE句でIndex Only Scanを実現する
DATABASE
2026-07-22 2026-07-22
  • ホーム
  • お問い合わせ
  • プライバシーポリシー

© 2022 suer