「データベース」の記事
7件 RSS で購読
7件
PostgreSQL のトランザクション ID 周回:VACUUM が行を凍結する理由と age(datfrozenxid) の読み方
PostgreSQL の32ビットのトランザクション ID が一周すると何が起きるのか、VACUUM の凍結と relfrozenxid・datfrozenxid、周回防止の autovacuum、警告と書き込み拒否の段階、復旧手順を PostgreSQL 18 の公式ドキュメントで整理しました。
PostgreSQL のデータチェックサムが検出するもの、しないもの
PostgreSQL のデータチェックサムは、データページを読むときに破損を検出します。検査が行われるタイミング、pg_checksums でオフラインのまま有効にする方法、pg_stat_database のカウンタ、amcheck とバックアップが受け持つ範囲を整理しました。
PostgreSQL の UPDATE が新しいインデックスエントリを作らない条件:HOT 更新と fillfactor
PostgreSQL の HOT(heap-only tuple)更新が起きる2つの条件、インデックスが参照する列と同じページの空き領域を公式ドキュメントで整理しました。fillfactor の設定と pg_stat_user_tables で比率を見る方法も扱います。
PostgreSQL のテーブルをジョブキューにするとき:FOR UPDATE SKIP LOCKED とロックが外れるタイミング
複数のワーカーが PostgreSQL のテーブルからジョブを分け合って取る FOR UPDATE SKIP LOCKED を公式ドキュメントで整理しました。ロックが続く範囲、LIMIT と OFFSET、ORDER BY の順序、WITH 内のロック句を扱います。
SQLite の -wal ファイルが大きくなり続けるとき:チェックポイントと終わらない読み取りトランザクション
SQLite の WAL モードで -wal ファイルが小さくならない理由を公式ドキュメントで整理しました。1000ページの自動チェックポイント、読み取りトランザクションがチェックポイントを止める仕組み、PASSIVE・FULL・RESTART・TRUNCATE の違いと journal_size_limit を扱います。
同じトランザクション内の SELECT が違う値を返す理由:PostgreSQL の READ COMMITTED とスナップショット
PostgreSQL のデフォルトの分離レベル READ COMMITTED で、1つのトランザクション内の SELECT が2回で違う結果を返す理由を公式ドキュメントで整理しました。文ごとのスナップショット、UPDATE の再評価、REPEATABLE READ と再試行も扱います。
NOT IN の結果が0件になる理由:SQL の NULL と3値論理
サブクエリの結果に NULL が1つでもあると NOT IN の条件で0件になる理由を、PostgreSQL・MySQL・SQLite の公式ドキュメントをもとに整理しました。3値論理、WHERE が行を残す条件、NOT EXISTS での直し方も扱います。
該当する記事がありません。別の言葉で検索してみてください。