
誰もが知ってる:データベースの機能・デッドロック
未経験からエンジニアになりたい人は、プログラミングから始める人が多いと思いますが、
エンジニアの仕事は、プログラミングだけではありません。そして、プログラミングだけでは、エンジニアになれません。同時にプログラミングが苦手でも、システム構成や開発の流れを理解するとエンジニアに近づきます!
今回はデータベースの機能 デッドロックについて更に詳しく調べてみましょう!

デッドロックとは
複数の処理が並行で実行されて同時に同じデータにアクセスされる場合に、
お互いがロック取得しようとしてデータを取り合い、処理が進まなくなる状態。
デッドロックイメージ

トランザクションA,Bとも相手のトランザクションのロック解除待ちとなる処理がストップ
デッドロックに対して
デッドロックが発生するとデータベースのパフォーマンスが著しく低下します
基本、デッドロックは避ける様にプログラミングする必要があります。
デッドロックを避けるため
1.更新する順序を標準化(ルール化)する
2.ロックするスコープ(範囲)を小さくする。早めにcommitかrollbackを行いロックを解除する
3.なるべくロックを掛けない仕様にする
update 在庫 = 在庫 -1 from 在庫テーブル
where id = ‘A0001’
等を使う
まとめ
ーデッドロックはデータ取得のロック
ーデッドロックは良くない状態
ーデッドロックが発生しない様に工夫する
最後に
未経験の皆さん、若手エンジニアの皆さん、勉強方法について悩みがあればなんでも気軽に質問して下さい!
これからも記事を書いていきますので、モチベーションアップのためフォロー、イイねお願いします。