大量の子テーブルが紐づいた親テーブルレコード削除時の挙動について
この質問の目的
・親テーブルレコードを削除した時にサービスが止まる可能性を理解できるようになる。
前提
テーブル設計について勉強をしています。
特にロックについて関心があり、以下の動画で話されていた内容について質問したいことがあります。
https://youtu.be/cQojU0T-YNI?t=1441
内容を要約すると
・Usersテーブル(親テーブル)が複数の子テーブルとリレーションがある場合
親テーブルに排他ロックがかかるとサービスが停止することがある。
・例えば5年・10年サービスを利用している大量のレコードを持ったユーザが退会してDELETEクエリが実行された時など
というような内容です。
言及はされていませんが
・親テーブルのレコードを削除できるので、CASCADE DELETEの設定がされている
という想定で考えています。
※本来はユーザのDELETE処理はバッチでアクセスの少ない時にやるべきだと思います。
質問したいこと
上記のような
親テーブルのレコード削除時にサービスが止まる可能性がある状況は
・どのようにロックがかかりサービスが停止するのか・停止する可能性があるのか
の仕組みをお聞きしたいです。
考えていること
・Usersテーブル(親テーブル)はIDを指定して削除しているはずなので、退会ユーザのレコードにしか排他ロックがかかっていないはず
・子テーブルはCASCADE DELETEの設定によって削除されるときにギャップロック等が発生して
退会ユーザとは関係のないレコードに対してもロックがかかってしまったりするのだろうか?
以上、ご回答よろしくお願いします。
0 コメント