あけおスクールに多額のお金を支払う前に、僕の記事で学習してね!
はじめに
データベースの話が進むと、
急に難しそうな言葉が出てきます。
- トランザクション
- ロック
- 同時実行制御
でも実はこれらは、
Webサービスを
当たり前に使えるようにするための仕組み
です。
この記事では、
トランザクションとは何か?
なぜ複数人が同時に使ってもDBは壊れないのか?
を、初心者向けに解説します。
トランザクションとは何か?
トランザクションとは一言でいうと、
複数のDB操作を
「ひとまとまり」として扱う仕組み
です。
トランザクションの身近な例
銀行振込を例にします。
- 送金元の残高を減らす
- 送金先の残高を増やす
この2つは、
両方成功して初めて意味があります。
途中で失敗したら、
お金は動いてはいけません。
👉
これを保証するのが
トランザクションです。
コミットとロールバック
トランザクションには
必ずこの2つが出てきます。
- コミット
→ 変更を確定する - ロールバック
→ 変更を取り消す
👉
成功したらコミット、
失敗したらロールバックです。
なぜトランザクションが必要なのか?
トランザクションがないと、
- 処理の途中でエラー
- サーバー障害
- 同時アクセス
で
データが中途半端な状態になります。
👉
これは致命的です。
トランザクションの4つの性質(ACID)
トランザクションには
有名な4つの性質があります。
A:Atomicity(原子性)
- 全部成功 or 全部失敗
C:Consistency(一貫性)
- ルールを守った状態を保つ
I:Isolation(独立性)
- 他の処理に邪魔されない
D:Durability(永続性)
- 確定したら消えない
👉
DBの信頼性の核心です。
同時実行とは何か?
同時実行とは、
複数の処理が
同時にデータベースを操作すること
です。
Webサービスでは、
- 複数ユーザー
- 複数リクエスト
が
常に同時に動いています。
同時実行で起きる問題
同時実行があると、
次のような問題が起きます。
- 二重更新
- データの不整合
- 想定外の値
👉
これを防ぐ必要があります。
ロックとは何か?
そこで登場するのが
ロックです。
ロックとは、
「今このデータ使ってます」
と他の処理に知らせる仕組み
です。
ロックのイメージ
- 1人が使っている間は
- 他の人は待つ
👉
トイレの個室のようなイメージです。
ロックの種類(概要)
ここでは概要だけでOKです。
- 行ロック
- テーブルロック
👉
細かい違いは後回しでOKです。
分離レベルとは何か?(軽く)
分離レベルとは、
どこまで他の処理を
影響させないか
という設定です。
- 完全に分離
- ある程度許可
👉
安全性と性能のバランスです。
Laravelとトランザクション
Laravelでは、
<?php
DB::transaction(function () {
// DB操作
});と書くだけで、
- 開始
- コミット
- ロールバック
を
自動で管理してくれます。
👉
使わない理由はありません。
トランザクションを使うべき場面
次のような場合は
必ず使います。
- 複数テーブルを更新
- お金・在庫・ポイント
- 途中失敗が許されない処理
トランザクションを使いすぎると?
注意点もあります。
- ロックが長くなる
- 性能に影響
👉
必要な範囲で使うのが重要です。
初心者が押さえるべきポイント
この段階では、
- トランザクション=まとめて処理
- 失敗時はロールバック
- 同時実行がある前提
これが分かっていればOKです。
次に学ぶべきこと
トランザクションが分かったら、
次は👇です。
👉 テーブル設計の基礎
(正規化とは何か?)


まとめ
- トランザクションはDBの命
- ACIDが信頼性を支える
- ロックで同時実行を制御
- Laravelでも必須知識
この記事は
DB中級への入口です。



あなたの挑戦を応援しています!!



