記事へのコメント34

    • 注目コメント
    • 新着コメント
    オーナーコメントを固定しています
    kamipo
    オーナー kamipo blogged

    2020/12/15 リンク

    その他
    tmatsuu
    そうか。情報処理技術者試験でロックはテーブル単位で順序を守ると学んでたのでこういう状況が発生することを把握できてなかった。ロックはテーブル単位とは限らないというのを認識する必要がある。

    その他
    t-tanaka
    SQLは,代表的な宣言型プログラミング言語。手続き型言語に比べ,テキシコーのいうところの「頭の中で手順をたどる」が極端に難しい。人類には早いのではないか?というきがしてならない。

    その他
    sawarabi0130
    車のキーをかばんに入れて、そのかばんを車に入れてとじ込みするとデッドロックが発生する

    その他
    p1ass
    知らなかった

    その他
    buhoho
    普段脳みそ停止して扱ってたけどDBってデッドロックするんかーい!!全然考えてなかったわ。今まで遭遇しなかったのは運がいいだけっぽいな…

    その他
    Eiichiro
    PKロック使ってました。確かにバッドノウハウというか、古の手法感はある。分離レベルはDB2のRCだったかな。あとは処理を全Insertにしてロックを取得しない方法もあるけど、本番レベルで試したことはないなぁ。

    その他
    mp0liiu
    インデックスの捜査順が違うとデッドロック発生するとか考えたこともなかった・・・ / 助かりました

    その他
    moto_motosaka
    知らなかった。ただ、for updateは複数レコードに対して、あんまり実行しないようにしてる気がする。ブコメ見ると、これには分離レベルの話も関わってくるのね

    その他
    rjge
    “ロックを取る順番が一意になるようにクエリや実行計画を揃えるというのがこの手の問題に対する一般的な対処法になります。 ロックを取る順番って見えづらいので問題に気づきづらい”

    その他
    quick_past
    完全に同時にロックを外すなんてのは書き方の上での方便であって、実際には順番に外すしかできないんだから、当然の結果ではあると思う

    その他
    minoton
    dbms(&オプション)によっても挙動が違うしねえ

    その他
    ichigen3
    ichigen3 これってファントムリードを回避するためにギャップロックがかかるのが原因だから、トランザクション分離レベルを、デフォルトのRepeatable ReadではなくRead Commitedしようって話な気がするけども。

    2020/12/16 リンク

    その他
    tettekete37564
    そんなこと起きるんだ。

    その他
    kenzy_n
    嵌ったことがある方にはしんみりとくる

    その他
    versatile
    最近 dead lock はタイムアウトするので、それでいいじゃんって思い込んでた老害

    その他
    yamadar
    show processlist; kill $pid;

    その他
    kibitaki
    意図的にデッドロックを起こして〇〇する、って中二病方面ですごい好まれそうな技だけどあまり採用例ないね。

    その他
    Kesin
    SELECT FOR UPDATEするときはWHEREで使うPKを事前にソートしてからSQLを組み立てていた

    その他
    oranie
    かくいう僕も眼の良さを活かして気合いで対処してるので

    その他
    ken39arg
    どうしても解決できなかったデッドロックか?と思ったけど少し違いそうだった。排他制御は難しい。それが面白いけど

    その他
    khigashigashi
    複数レコードのロックは一瞬で同時に起きるわけではなく、順番に起きて途中の状態が存在するので、ロックを取る順番が一意になるようにクエリや実行計画を揃える

    その他
    hdampty7
    hdampty7 ロックをかけるときは意図的にロックテーブル作ってPKでロックをとるようにするというバッドノウハウがある。DBが複雑になって来るとデッドロックは追跡が難しく深刻な問題。

    2020/12/16 リンク

    その他
    gfx
    "ロックを取る順番が一意になるようにクエリや実行計画を揃えるというのがこの手の問題に対する一般的な対処法"

    その他
    electrolite
    electrolite 完全に防ぐ方法はない。ロックエスカレーションもあるから順番だけでも解決しない。RDBMSのデッドロック検知に任せて起きたらアプリを直す。RDB誕生時からの定理。しかしRDBは長命レガシーだな。また一周回った。

    2020/12/16 リンク

    その他
    t_f_m
    t_f_m "ロックを取る順番が一意になるようにクエリや実行計画を揃えるというのがこの手の問題に対する一般的な対処法になります"

    2020/12/16 リンク

    その他
    mizchi
    mizchi いい話 “かくいう僕も眼の良さを活かして気合いで対処してる”

    2020/12/16 リンク

    その他
    cartman0
    データベーススペシャリスト的なやつの問題にないのかしら

    その他
    nakag0711
    nakag0711 諦めてデッドロックしたら再実行しよう。最悪手動で

    2020/12/16 リンク

    その他
    waihasaruya
    学び

    その他
    yo_waka
    "ロックを取る順番が一意になるようにクエリや実行計画を揃えるというのがこの手の問題に対する一般的な対処法になります"

    その他

    注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています

    アプリのスクリーンショット
    いまの話題をアプリでチェック!
    • バナー広告なし
    • ミュート機能あり
    • ダークモード搭載
    アプリをダウンロード

    関連記事

    SELECT ... FOR UPDATE同士でデッドロックさせる - かみぽわーる

    最近SELECT ... FOR UPDATEでデッドロックする話を何度かしたので。 前職のときにUPDATE同士がデッドロ...

    ブックマークしたユーザー

    • katsukiniwa2024/09/16 katsukiniwa
    • stefafafan2023/11/17 stefafafan
    • miki_bene2023/09/03 miki_bene
    • techtech05212023/05/05 techtech0521
    • shifumin2022/10/10 shifumin
    • knj29182022/07/01 knj2918
    • nabinno2021/07/07 nabinno
    • yyamano2021/02/04 yyamano
    • d-hayashi2021/01/28 d-hayashi
    • civitaspo2021/01/11 civitaspo
    • kadoppe2021/01/03 kadoppe
    • tmatsuu2021/01/03 tmatsuu
    • kawasin732020/12/25 kawasin73
    • mkusaka2020/12/22 mkusaka
    • shigiryou2020/12/20 shigiryou
    • hbKOT2020/12/20 hbKOT
    • thotentry_hatebu1972020/12/17 thotentry_hatebu197
    • sskoji2020/12/17 sskoji
    すべてのユーザーの
    詳細を表示します

    同じサイトの新着

    同じサイトの新着をもっと読む

    いま人気の記事

    いま人気の記事をもっと読む

    いま人気の記事 - テクノロジー

    いま人気の記事 - テクノロジーをもっと読む

    新着記事 - テクノロジー

    新着記事 - テクノロジーをもっと読む

    同時期にブックマークされた記事

    いま人気の記事 - 企業メディア

    企業メディアをもっと読む