PostgreSQL であなたの UPDATE が終わらない理由 〜トランザクション、ロック、MVCC を実験で理解する〜

アプリケーションから次のようなSQLを実行したのに、なかなか応答が返ってこないことがあります。

UPDATE accounts SET balance = balance - 100 WHERE id = 1;

こういうときに原因の一つとして早めに確認しておきたいものがロック待ちです。ロック待ちとは、あるトランザクションが更新中の行などを、別のトランザクションが同時に変更しようとして、先のトランザクションが終わるまで待っている状態です。PostgreSQLはデータの矛盾を防ぐため、同じ行を複数の処理が同時に勝手に書き換えられないようにします。そのため、後から実行したUPDATEは、必要なロックを取得できるまで待つことがあります。

本記事では、同じ行へのUPDATEによってロック待ちが起きる状況を作り、どこを確認すれば原因を切り分けられるのかを説明します。

続きを読む

YugabyteDB Voyager の紹介

YugabyteDB Voyagerは、YugabyteDBへの移行を支援するツールです。移行可否のアセスメントから、スキーマ移行、データ移行まで、データベース移行に必要な操作全般を管理することができます。
本稿では、まずYugabyteDB Voyagerの概要について解説し、さらに移行方式の一つであるオフラインマイグレーションについて、具体的な操作方法を解説します。

続きを読む

ロジカルレプリケーションによるメジャーバージョンアップ手順

PostgreSQL のメジャーバージョンアップにはいくつかの手法がありますが、本記事ではその中でもロジカルレプリケーションを利用した方法を紹介します。ロジカルレプリケーションを用いることで、新旧バージョンのデータベースを並行稼働させながらデータを同期できるため、切り替え時のダウンタイムを最小限に抑えたアップグレードが可能です。その具体的な手順とあわせて、実施時に注意すべきポイントについて解説します。

続きを読む

PostgreSQL 18.4 に関する技術情報

このリリースは 18.3 からの修正リリース(2026年 5月 14日リリース)です。
18.X からのアップデートではダンプ、リストアは不要です。
しかしながら、18.2 よりも前のバージョンからアップデートする場合には、18.2のリリース情報も参照してください。

続きを読む

PostgreSQL 17.10 に関する技術情報

このリリースは 17.9 からの修正リリース(2026年 5月 14日リリース)です。
17.X からのアップデートではダンプ、リストアは不要です。
しかしながら、17.6 よりも前のバージョンからアップデートする場合には、17.6のリリース情報も参照してください。

続きを読む

PostgreSQL 16.14 に関する技術情報

このリリースは 16.13 からの修正リリース(2026年 5月 14日リリース)です。
16.X からのアップデートではダンプ、リストアは不要です。
しかしながら、16.10 よりも前のバージョンからアップデートする場合には、16.10のリリース情報も参照してください。

続きを読む

PostgreSQL 15.18 に関する技術情報

このリリースは 15.17 からの修正リリース(2026年 5月 14日リリース)です。
15.X からのアップデートではダンプ、リストアは不要です。
しかしながら、15.14 よりも前のバージョンからアップデートする場合には、15.14のリリース情報も参照してください。

続きを読む

PostgreSQL 14.23 に関する技術情報

このリリースは 14.22 からの修正リリース(2026年 5月 14日リリース)です。
14.X からのアップデートではダンプ、リストアは不要です。
しかしながら、14.19 よりも前のバージョンからアップデートする場合には、14.19のリリース情報も参照してください。

続きを読む