共有
  • 記事へのコメント32

    • 注目コメント
    • 新着コメント
    その他
    ntmukai
    デッドロック発生の流れが分かりやすい。

    その他
    yasuharu519
    わかりやすい解説

    その他
    tettekete37564
    “(入室人数取得クエリ” < この結果が 0 だったときにトランザクション張り直しリトライではダメなのか?

    その他
    ar1theworld98
    “使用するDBがどのトランザクション分離レベルで稼働しているかはアプリケーション側のコードには現れにくいのにも関わらず、正確にそれらを把握しておかないとサービスに重要な影響を与える深刻なバグに繋がる可能

    その他
    rryu
    アプリケーションレベルの排他制御をDBMSのロックを利用して実装するという発想が既にバグの元な感じがする。インデックス張っただけでバグるとか罠すぎる…

    その他
    lm0x
    id:erectroliteさんのコメントの意味がわからない…

    その他
    lalupin4
    RR が基本なんだっけ。

    その他
    ryunosinfx
    高負荷時だとロックすら躊躇されるからトランザクション張れない・・・(コンピューティングパワーが足りないかテーブルの設計が間違ってるとも言う。)

    その他
    yukky2000
    張るのはコネクションじゃないのか

    その他
    a_bicky
    gap lock は排他ロックも共有ロックも共有ロック的に振る舞うの知らなかった…

    その他
    xlc
    トランザクションを「張る」って何ぞ?/ RDBとSQLは正規表現と同じようなプログラミングパラダイムであり、オブジェクト指向では代替できないのだが、それを理解されてないよね。

    その他
    oakbow
    oakbow 分離レベルの話でRDB使わずにnoSQLでやるって言ってる人はちょっと使い方間違ってる気がするんだけどな。自前ロックとか車輪の再発明だしRDB以上にデータ整合性と同時実行制御できないと思うんだけど。

    2020/12/20 リンク

    その他
    Lumin
    select for updateは1年生で習います、SIerなら

    その他
    buhoho
    ありがたい教え

    その他
    letitride
    letitride 銀行の例だとupdateでロックとって、updateのsetで演算するかな。tx.Exec(`UPDATE balances SET balance = balance - ? WHERE user_id = ? and balance >= ?`, amount, userID, amount);でロストアップデートなしで安全に残高内で減算取引できる

    2020/12/20 リンク

    その他
    perl-o-pal
    perl-o-pal 初学者もいるわけだから何度やってもいい話だと思う。//私程度だとやらかしてから初めてあっ、てなるからなあ。まあ、この手の排他をRDBMSのトランザクションでやろうとは思わないかな…?

    2020/12/20 リンク

    その他
    daishi_n
    ロック制御しているところは処理上のボトルネックにもなるので適切なトランザクションモードを選択するのがパフォーマンスの要なんだけどコード書く側のリテラシーに依存してるのが厄介さん

    その他
    KazuoLv1
    並列処理ならまずスレッドの勉強しておくべし

    その他
    robo_pitcher
    エンタープライズシステムだと業務要件分析とトランザクションレベルの分析をきちんとしないと原因不明バグやパフォーマンス低下に苦しむ事になる

    その他
    Iridium
    こういうシーケンシャルな問題を調査するのってタイミングが絡んでくるので難しくない?逐次実行するとかみたいなモードってないのかな

    その他
    infobloga
    infobloga 解説としては分かりやすいけど、実務上はw1234567さんのコメントが的確。でも、久しぶりにこの話を読んで「こんな面倒なこと考えるなら、KVSで自前でロックするのが簡単で安全」って思った。

    2020/12/20 リンク

    その他
    matsui
    “MySQLやPostgreSQLに代表されるRDBMS”

    その他
    shikiarai
    shikiarai チャットシステム程度を作るのにRDBMS使う必要があるのか。他の実装より高コストになってないか。って話もあるのだけれど、これはあくまで例かなということで。。

    2020/12/20 リンク

    その他
    masayuki5160
    今まで読んできた中で一番わかりやすい説明だった。

    その他
    electrolite
    electrolite また30年以上前の知識(分離レベル)が一周回って出てきた。批判するわけではなく学習としては有効だが、今だったらRDB外でシリアライズか、最低限API化してアプリに直接たたかせないようにするかな。てかNoSQLか。

    2020/12/20 リンク

    その他
    kamocyc
    トランザクション分離レベルの話。確かにちゃんと考えないとまずいところ。

    その他
    harumomo2006
    緩いシステムではソシャゲ方式はわりと使える。被害が最小限になるようにデータ破損を前提に処理の順番を組み上げる=魔法石の効果発動を先にして魔法石が実際に消費されるのが最後

    その他
    areyoukicking
    この辺は考えたことある

    その他
    w1234567
    w1234567 MySQL詳しくないから変なこと言ってるかもだけど、roomsテーブルのレコードを最初にSELECT FOR UPDATEしてロックかけるのじゃ駄目なの?

    2020/12/20 リンク

    その他
    umai_bow
    “。”

    その他

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

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

    関連記事

    「トランザクション張っておけば大丈夫」と思ってませんか? バグの温床になる、よくある実装パターン

    この記事は DeNA 20 新卒 Advent Calendar 2020 19日目の記事です。 はじめに MySQLやPostgreSQLに代表...

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

    すべてのユーザーの
    詳細を表示します

    同じサイトの新着

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

    いま人気の記事

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

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

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

    新着記事 - テクノロジー

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

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

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

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