#34: PostgreSQLのロック:アプリ開発の「はまりどころ」から内部実装まで(後編) episode artwork

EPISODE · Jun 9, 2026 · 29 MIN

#34: PostgreSQLのロック:アプリ開発の「はまりどころ」から内部実装まで(後編)

from Tech Table Log: 同期エンジニアの雑談・勉強ログ · host Lon, Shinya

PostgreSQLのロックの仕組みについて、データベース内部実装(SpinlockやLWLockなど)のディープな世界を深掘りする2回エピソードの後編です。今回は、DBAやデータベース開発者、並行プログラミングに関心がある方向けに、PostgreSQLの内部的な排他制御を解説します。CPUのアトミック命令であるCAS (Compare-and-Swap) を前提知識として、WAL (Write-Ahead Logging)の書き込みなどで使われ競合時にスリープする「Lightweight Lock (LWLock)」と、スリープせずにCPUを回し続けてロック獲得を待つ「Spinlock」の仕組みや用途の違いを整理します。さらに、Linux 7.0環境で話題になったPostgreSQLの性能劣化問題の真相に迫ります。カーネルのスケジューラ変更(プリエンプションの挙動変化)がSpinlockに与えた影響や、PostgreSQLコミッタが指摘する、Spinlockをfutexに置き換えることの構造的な難しさを紹介します。また、この性能劣化報告の根本的な原因が「Huge Pages」の未設定によるTLBミスとページテーブル探索のオーバーヘッドにあったことを挙げ、OS・CPUレベルの適切なパラメータ設定がいかに重要であるかを議論します。PostgreSQL内部実装 / CAS命令 (Compare-and-Swap) / Lightweight Lock (LWLock) / Spinlock / WAL書き込み / Linux 7.0性能劣化問題 / プリエンプション / futex / Huge Pages / パラメータチューニング参考リンク⁠PostgreSQLのロックでハマりがちな挙動5選⁠⁠AWS Engineer Reports PostgreSQL Performance Halved By Linux 7.0, But A Fix May Not Be Easy⁠⁠I really dislike the use of spinlocks in postgres

Episode metadata supplied by the publisher feed · Published Jun 9, 2026

Embed this episode

Ready to play

#34: PostgreSQLのロック:アプリ開発の「はまりどころ」から内部実装まで(後編)

0:00 29:49

No transcript for this episode yet

We transcribe on demand. Request one and we'll notify you when it's ready — usually under 10 minutes.

No similar episodes found.

No similar podcasts found.

Frequently Asked Questions

How long is this episode of Tech Table Log: 同期エンジニアの雑談・勉強ログ?

This episode is 29 minutes long.

When was this Tech Table Log: 同期エンジニアの雑談・勉強ログ episode published?

This episode was published on June 9, 2026.

Can I download this Tech Table Log: 同期エンジニアの雑談・勉強ログ episode?

Yes. Use the download control on the episode player to save the publisher-provided media file.
URL copied to clipboard!