2019-03-24

anond:20190324155924

一回のクエリ複数更新や削除するのはデッドロックの温床になりそうだね。

クエリの順番性次第でデッドロックになるって知った天才

これを

select * from user where id = 1 for update;

select * from user where id = 2 for update;

「2回投げるとデッドロックになるんか。せやwこうしたろwww」

select * from user where id in (1, 2) for update;

にする未来が見えたw

記事への反応 -
  • キーレスエントリー(外部キー嫌い) 外部キー嫌いがアンチパターンなのは同意だが、間違った外部キーの使い方するほうがよっぽどアンチパターンじゃないか? 外部キー貼らなかったこ...

    • SQLアンチパターンではないが、デッドロックについても投げっぱなしのあのSELECT FOR UPDATEの説明はなんなのかね。 1回のトランザクションでupdateを2回発行する場合と1回のSQLで複数行のア...

      • 投げっぱなしの説明ってのは意味不明だけど、一回のクエリで複数行更新や削除するのは確かにデッドロックの温床になりそうだね。 クエリの順番性次第でデッドロックになるって知っ...

    • 削除フラグ持たせてユーザ名を「退会済みユーザ」に上書きしたろ! ↑ ダメなん?

      • 特別な理由があればいいと思うが、基本、nullableカラム持ったり状態をカラムに記録するのはアンチパターンらしいよ。 https://www.slideshare.net/t_wada/ronsakucasual https://qiita.com/Jxck_/items/156d0a231...

        • これDB屋の自己満足だよな 顧客の要望はたいていこの3つで 1.退職などの理由で無効化したIDは処理に含めない(ただしオプションで含める機能を付ける) 2.無効化を解除することもある...

      • そいうのは、削除フラグと言わずに、退会フラグ と言いなさい。

    • 大規模案件ほどシャーディングが前提になるから、 外部キー制約の出る幕なんて無いね

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん