タグ

2021年7月29日のブックマーク (2件)

  • 外部キー制約に伴うロックの小話

    4. ロックおさらい(簡易) • 共有ロック(LOCK_S) 共有ロック同士は互いにブロックしない 例:SELECT LOCK IN SHARE MODE • 排他ロック(LOCK_X) 何も受け付けないぞ、排他 例:INSERT(成功), UPDATE, DELETE, SELECT FOR UPDATE X S X Conflict Conflict S Conflict Compatible 4 大きく分けてロックは2種類 5. 5 > BEGIN; > SELECT * FROM player WHERE id = 100 LOCK IN SHARE MODE; > BEGIN; トランザクションA トランザクションB 共有と排他順によるデッドロック例 6. 6 > BEGIN; > SELECT * FROM player WHERE id = 100 LOCK IN SHARE MO

    外部キー制約に伴うロックの小話
  • 【MySQL】外部キー制約とロックとデッドロックについて - とりあえずphpとか

    はじめに MySQLはよく使っているのですが外部キー制約はほとんど使った事ありませんでした。 使うデメリットとしてはデータの登録作業が面倒だから・・・程度で考えていました が、今回は既に外部キーを採用しているシステムでの作業でしたがほとんど経験なかったので少し苦労しました 発生した現象としては原因不明のデッドロックエラーでこのようなエラーでした Deadlock found when trying to get lock; try restarting transactionなぜ意味不明かと思ったかと言うと以下からそう思っていました ・対象のテーブルを使用している箇所が1箇所だけ ・必ず一意となるデータをINSERTするだけ 概要 会員テーブル(user) 会員ID(id) 会員名(name) カウント(count) 1 太郎 0 2 花子 0 商品テーブル(item) 商品ID(id)

    【MySQL】外部キー制約とロックとデッドロックについて - とりあえずphpとか