データベースのロック(排他制御)とは?ロックの種類や仕組みを解説

Поділитися
Вставка
  • Опубліковано 5 вер 2024

КОМЕНТАРІ • 13

  • @seomaru
    @seomaru  4 роки тому +4

    質問・感想・リクエストなどお気軽にコメントください😀
    「共有」ボタンから、友達やSNSへのシェアもお願いします👍

  • @morita821
    @morita821 3 роки тому +2

    せお丸さんいつも楽しく動画の方拝見させていただいております。
    アドバイザリロックについて質問です。
    実務ではアドバイザリロックはどういう場面で使用するのか教えていただけたら幸いです

    • @seomaru
      @seomaru  3 роки тому +1

      自分はロックかけたい場面=データの整合性を保ちたい場面では、アドバイザリロック使っちゃいます。
      select for updateだとギャップロックしちゃうので、使いづらいんですよね...

  • @neo1788
    @neo1788 Рік тому

    とても参考になりました!
    1:44 ロックの種類
    3:44 ロックの範囲
    4:07 SELECT FOR UPDATE は何?
     8:40 注意点
    10:16 アドバイザリロック
     10:45 ハンズオン
      11:53 ロックの解放
    13:18 楽観的・悲観的ロック
     15:02 悲観的ロック
     15:30 使い分けのポイント
     16:42 楽観的ロックとバージョンカラム
    17:29 まとめ
    18:19 どのロック方法が良い?

  • @mtaka84219
    @mtaka84219 6 місяців тому

    楽観ロックが select for update をやるか、update をversion条件付きで実行するかは実装によるんじゃ。

  • @user-em3nk9sj4c
    @user-em3nk9sj4c 2 роки тому

    分かりやすい動画ありがとうございます。
    現在Railsを勉強しています。
    一点気になったのですが、
    注意点で処理が終わったらコミット、ロールバックをしないとロックがずっとかかりっぱなしになるとのことですが、
    ロックを解除せずにアクションを抜けた場合は、ロックは解除されるのでしょうか?😅

  • @user-mb8ch6tu9w
    @user-mb8ch6tu9w 2 роки тому

    分かりやすい動画ありがとうございます。1点ご質問、楽観ロックの説明のselect for updateですが、select for updateにすると、対象データに対して他人は参照しかできないことを理解しています。いわゆる、楽観ロックの間に、選択したデータが更新されないはずですが(つまりUpdateされないこと)、なぜ最初にSelectしたデータとの比較処理が必要でしょうか。

  • @user-fd3th6dt5c
    @user-fd3th6dt5c 4 роки тому +1

    アドバイザリロックは、何にロックを掛けているんですか?

    • @seomaru
      @seomaru  4 роки тому +1

      テーブルやレコードではなく、名前にロックをかけています😀

  • @user-pm9dh2km8v
    @user-pm9dh2km8v 3 роки тому +1

    楽観ロック→共有ロック
    悲観ロック→占有ロック
    ってことでいいですか?

    • @donpham726
      @donpham726 2 роки тому

      同じ疑問ですね。何となく似ていますね。

  • @iro2887
    @iro2887 3 роки тому

    お世話になります。
    すごくわかりやすいご説明です ありがとうございます。
    アドバイザーロックのご質問ですが、行ロックもない、テーブルロックもない、名前その物をロックだとご説明頂いておりますが、
    処理を見るとテーブルロックに見えますが、違いますでしょうか?
    例:userテーブルをアドバイザーロックしたい場合どうなるのでしょうか?

    • @seomaru
      @seomaru  3 роки тому +1

      アドバイザリーロックは、テーブルロックとは違う概念です😃
      DB全体に対して、その名前でロックを取りに行くものです。
      逆にいうと、その名前でロックを取得しに行かないと、
      何もロックがかからないので、テーブルや業レベルのロックが保証されません。