■やりたい事
更新処理中に更新しているテーブルのデータを参照したい(select)したい
■状況
SQL Serverを利用しているのですが、非常に重い更新処理を実施しており、処理時間が長くなっています。
そのため、他の処理で該当テーブルを読み込めず困っています。読み込みするデータについては更新されていないのであれば、更新前のデータを取得、で問題ありません。
■調べた事
こちらのサイトから分離レベルを変更すればできる、と理解しました。
sql
1■更新処理側 2transaction begin; 3update tmp_table hogehoge; 4(長い) 5commit; 6 7■参照処理側 8set transaction isolation level read uncommitted; 9select * from tmp_table hogehoge; 10set transaction isolation level read committed;
現状のSQL Serverの設定はread committedでしたので最後戻す処理を入れています。
■調べた上で。。
SQLの分離レベルの変更はテーブル単位ではなく、DB単位であると思っています。
DB単位で分離レベルがread uncommittedになり、InsertやUpdateがTransaction中に出来る、となるのは避けたいと思っています。
理由としては該当テーブルのみであれば問題ありませんが、他テーブルについては頻繁に更新処理を実施しており、不整合が生じるのを避けたい、からになります。
そのため、こちら分離レベルはread uncommittedにしたいのですが、transaction中に許容する内容をSELECTのみに設定することはできないのでしょうか。
また該当テーブルのみ分離レベルを変更する、ということはできないのでしょうか。
その他、もし妙案あればご助言いただけますと助かります。
回答1件
あなたの回答
tips
プレビュー