suer TIL
eye catch
【PostgreSQL】SELECT FOR UPDATEで行をロックする
SELECT FOR UPDATEとは SELECT ... FOR UPDATEは、取得した行に対して排他的な行ロックを取得する構文である。ロックはトランザクションの終了まで保持され、他のトランザクションは同じ行に対するUPDATEやDELETE、SELECT FOR UPDATEで待たされる。
DATABASE
2026-07-26 2026-07-26
eye catch
【PostgreSQL】再起動が必要な設定を見分ける
設定の反映方法は3通り PostgreSQLの設定を変更したあと、変更を反映する操作は設定項目ごとに異なる。 graph TD A[設定を変更] --> B{context} B -->|internal| C[変更不可] B -->|postmaster| D[設定ファイル + 再起動] B -->|sighup| E["設定ファイル + リロード"] B -->|superuser-backend / backend| F["設定ファイル + リロード<br/>反映は新規セッションから"] B -->|superuser / user| G["設定ファイル + リロード<br/>またはSETでセッション単位に変更"] postgresql.confを書き換えてリロードしただけでは反映されない設定もあるため、変更前に判別しておく。判別にはpg_settingsのcontextカラムを使用する。
DATABASE
2026-07-26 2026-07-26
eye catch
【PostgreSQL】pg_stat_user_tablesでSeq ScanとIndex Scanの比率を確認する
pg_stat_user_tablesとは pg_stat_user_tablesは、テーブルごとのアクセス状況を集計するビューである。Seq Scan(全件走査)とIndex Scanのそれぞれの回数を確認できるため、インデックスが不足しているテーブルの発見に使える。
DATABASE
2026-07-26 2026-07-26
eye catch
【PostgreSQL】shared_buffersとwork_memの役割と確認方法
shared_buffersとwork_memの役割 PostgreSQLのメモリは大きく2種類ある。全プロセスで共有する領域と、バックエンドプロセスごとに確保する領域である。shared_buffersは前者、work_memは後者を制御するパラメータである。
DATABASE
2026-07-26 2026-07-26
eye catch
【PostgreSQL】SHOW ALLやpg_settingsで設定値を一覧・検索する
SHOW ALLで設定値を一覧する PostgreSQLの全設定値を一覧するにはSHOW ALLコマンドを実行する。 SHOW ALL; name | setting | description ---------------------------------+---------+--------------------------------------------------------- application_name | psql | Sets the application name to be reported in statistics... archive_mode | off | Allows archiving of WAL files using archive_command. autovacuum | on | Starts the autovacuum subprocess. max_connections | 100 | Sets the maximum number of concurrent connections. shared_buffers | 16384 | Sets the number of shared memory buffers used by the ... work_mem | 4096 | Sets the maximum memory to be used for query workspaces. ・ ・ ・ (300 rows) 設定項目数は300件を超え(バージョンによって異なる)、name・setting・descriptionの3カラムのみが表示される。
DATABASE
2026-07-26 2026-07-26
eye catch
【PostgreSQL】CHECK制約を後から安全に追加する方法
そのままCHECK制約を追加する場合の問題 既存のテーブルにCHECK制約を追加するには、ALTER TABLE ... ADD CONSTRAINT ... CHECKを使用する。 ALTER TABLE products ADD CONSTRAINT price_positive CHECK (price > 0); この方法は、テーブル全体をスキャンして既存の全行が条件を満たすことを検証する。 検証中はテーブルに対してACCESS EXCLUSIVEロックを保持し続けるため、大規模なテーブルでは検証が終わるまでの間、参照・更新を含むすべてのアクセスがブロックされる。
DATABASE
2026-07-26 2026-07-26
eye catch
【PostgreSQL】外部キー制約を後から安全に追加する方法
そのまま外部キー制約を追加する場合の問題 既存のテーブルに外部キー制約を追加するには、ALTER TABLE ... ADD CONSTRAINT ... FOREIGN KEYを使用する。 ALTER TABLE orders ADD CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users(id); この方法は、参照元テーブルの既存行が参照先テーブルの主キーを正しく参照しているかを検証する。 検証の間、参照元・参照先の両テーブルに対してSHARE ROW EXCLUSIVEロックを保持し続ける。
DATABASE
2026-07-26 2026-07-26
eye catch
【PostgreSQL】NOT NULL制約を後から安全に追加する方法
そのままNOT NULL制約を追加する場合の問題 既存のカラムにNOT NULL制約を追加するには、ALTER TABLE ... ALTER COLUMN ... SET NOT NULLを使用する。 ALTER TABLE big_users ALTER COLUMN email SET NOT NULL; この方法は、テーブル全体をスキャンして既存の全行がNULLを含まないことを検証する。 検証中はテーブルに対してACCESS EXCLUSIVEロックを保持し続けるため、大規模なテーブルでは検証が終わるまでの間、参照・更新を含むすべてのアクセスがブロックされる。
DATABASE
2026-07-26 2026-07-26
eye catch
【PostgreSQL】pg_basebackupで物理バックアップを取得する
pg_basebackupとは pg_basebackupは、稼働中のPostgreSQLサーバーからデータベースクラスタ全体の物理バックアップを取得するコマンドである。 取得したバックアップは、レプリカの構築やリストアに使用する。
DATABASE
2026-07-25 2026-07-25
eye catch
【PostgreSQL】log_min_duration_statementでスロークエリをログに出力する
log_min_duration_statementとは log_min_duration_statementは、指定した時間(ミリ秒)以上かかったSQL文をログに出力するPostgreSQLのパラメータである。 スロークエリを特定する際に使用する。
DATABASE
2026-07-25 2026-07-25
  • ««
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
  • »»
AUTHOR
author image
suer
ふつうのプログラマ
LATESTS
eye catch
【PostgreSQL】SELECT FOR UPDATEで行をロックする
DATABASE
2026-07-26 2026-07-26
eye catch
【PostgreSQL】再起動が必要な設定を見分ける
DATABASE
2026-07-26 2026-07-26
eye catch
【PostgreSQL】pg_stat_user_tablesでSeq ScanとIndex Scanの比率を確認する
DATABASE
2026-07-26 2026-07-26
eye catch
【PostgreSQL】shared_buffersとwork_memの役割と確認方法
DATABASE
2026-07-26 2026-07-26
eye catch
【PostgreSQL】SHOW ALLやpg_settingsで設定値を一覧・検索する
DATABASE
2026-07-26 2026-07-26
  • ホーム
  • お問い合わせ
  • プライバシーポリシー

© 2022 suer