データベース管理におけるトランザクションと排他制御

本日、2投稿目となります!

 

今回の内容は、勉強する中で非常に重要な観点だった為、

自分用メモの意味でもブログに残しておこうと思いました。

 

データベースの管理は、Webエンジニアになるにあたり必須観点です。

考察するに、以下のような情報管理が必要になるからです。

 ・Webアプリを利用していただくユーザーの管理

 ・サービス(商品、記事など)ごとの管理

 ・管理者権限と一般ユーザー権限管理など

 

そのようなデータベース管理において、

今回は、アプリ実務未経験ですが、データ管理者観点の基礎内容を纏めてみました。

 (違うよ!実務はこうするよ!などご意見いただけるとありがたいです汗)

 

トランザクション
  データベース処理における「一連の処理を一まとめにしたもの」

 

排他制御
  処理中のデータをロックして、他の人が書き込みできないようにする
   -> データの不整合が生じないようにする

  *共有ロック
   他のユーザーは、データを読み込み可能:書き込み不能
  *専有ロック
   他のユーザーは、データを読み込み不能:書き込み不能

 

デッドロック

  複数の処理を実行する際に、お互いにデータロックして処理待ち状態になること

  この場合は、処理をKillしなければならない。

   トランザクション1
    処理1:データAにアクセス(ロック)
    処理2:データBにアクセス(ロック中の為、解除待ち

   トランザクション2
    処理1:データBにアクセス(ロック)
    処理2:データAにアクセス(ロック中の為、解除待ち

 

・ACID特性
 Atomicity(原子性)     :全て実行されるか、何も実行されないか
 Consistency(一貫性):中身に矛盾がないこと
 Isolation(隔離性)    :複数の処理を実行しても相互影響しないこと
 Durability(耐久性)  :更新結果が変わらないこと
            障害が発生しても内容が消失しないこと

 

技術内容の発信において、色々な方のご意見いただけると嬉しいです。
間違っている点など、ご指摘などもあれば、よろしくお願いします。


最後まで読んでいただき、ありがとうございました!