- PR -

複数テーブルの読み込み一貫性について

1
投稿者投稿内容
るいるい
常連さん
会議室デビュー日: 2004/08/01
投稿数: 21
投稿日時: 2004-09-03 10:18
複数テーブルからデータを読み込み処理をする場合のそれぞれのテーブルの整合性(一貫性)について伺いたい事があります。愚問かもしれませんがご教授いただけたら幸いです。

例えば、以下のような処理をするプログラムがあったとします。

 (1) テーブルAからデータを読み込み必要なデータをCSVファイルに出力
 (2) テーブルBからデータを読み込み必要なデータをCSVファイルに出力

(2)の処理をする場合、当然(1)の処理より時間差があるため、(1)の処理をした時点でのデータである保証はありません。(1)と(2)のそれぞれ整合性を保つためには、(2)の出力は(1)の時点におけるデータである必要があります。

OracleやMSSQL などDBによってアプローチが異なるのかもしれませんが、皆様はどの様に対応しているのでしょうか。

[ メッセージ編集済み 編集者: るいるい 編集日時 2004-09-03 10:19 ]
ゆう
ベテラン
会議室デビュー日: 2003/06/20
投稿数: 56
投稿日時: 2004-09-03 11:03
こんにちわ。

仰られていることは、(1)の処理をした後に(2)の処理をするけれども
(1)が処理中に他のトランザクションなどからコミットされたデータを
反映したくないということですよね?

こういった話ならば、Oracleであればトランザクション単位の読み取り一貫性を使えば解決すると思います。

SET TRANSACTIOM READ ONLY;

とすることで、そのトランザクションは、それ以降に他のトランザクションで
行われたコミットに影響されることが無く、読み取り専用にした時点のデータを
読み続けることが可能です。
1

スキルアップ/キャリアアップ(JOB@IT)