2014年11月24日

59. 論理的に同じデータを格納するテーブルの分割について

論理的に同じデータ(同じ主キー)を格納するテーブルを ステータスなどにより 分割しないこと。
例 :
1.仮データを登録する
2.仮データを本データに変更する
3.本データはそのままに、仮データを登録する ※
4.仮データを本データに変更する(上書きする)
を表現したい場合に、仮データと本データを管理するテーブルを分割しないこと。

仮データ、本データともに対象レコードが存在しないタイミングがあることで、排他制御のためのロック時にデッドロックを発生させてしまう可能性があるため。
参考 : 56. 1リクエスト(1スレッド)で実行するトランザクション数について

なお、もし、テーブルを分割したい場合は、(必ず対象データを存在させる)中間テーブルを定義すること。

この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック