一般社団法人 全国個人事業主支援協会

COLUMN コラム

✨ ガーベージコレクションのメリット

  • ストレージ節約

  • クエリ速度の維持

  • インデックス効率の改善

  • 膨張(bloat)防止

  • 古いデータのリーク防止(セキュリティ)

 

🔥 MVCCとガーベージコレクションの関係

まず一言で言うと:

MVCCが「古いデータを残す仕組み」
GCは「もう不要になった古いデータを消す仕組み」

つまり
MVCCがゴミを生み、GCが掃除する。


🧠 まずMVCCとは?

MVCC(Multi-Version Concurrency Control)は

「更新時にデータを上書きせず、新しいバージョンを作ることでロック競合を減らす仕組み」

例:

元データ:

id=1, balance=100

Transaction A が UPDATE:

旧バージョン: balance=100 ← 残る
新バージョン: balance=200 ← 作られる

✔ 読み取りトランザクションは旧バージョンを参照
✔ 新規トランザクションは新バージョンを見る

これが Snapshot Isolation の正体。

💣 でも問題がある

MVCCは「古いデータを消さない」設計。

すると:

  • UPDATEするたびに古い行が残る

  • DELETEしても物理的には残る

  • Undoログも溜まる

  • インデックスも増える

👉 これが バージョン膨張(bloat)

🧹 そこでガーベージコレクション

GCの役割はこれ:

「どのトランザクションからも参照されなくなった古いバージョンを削除する」

まとめ(超シンプル)

データベースのガーベージコレクション = トランザクションや更新の結果できた “不要なデータの掃除” をするプロセス。
自動で動き、性能劣化やストレージ浪費を防ぐための大切な仕組み。

The following two tabs change content below.

小久保 暁人

最新記事 by 小久保 暁人 (全て見る)

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア