トランザクションについて教えて下さい。
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
Re: トランザクションについて教えて下さい。
msg# 1.5
nkmt
投稿数: 1668
そうですね。
SQL側にトランザクション開始が送られるんですね。
私も勉強になりました。
SQL側にトランザクション開始が送られるんですね。
私も勉強になりました。
投票数:0
平均点:0.00
Re: Re: トランザクションについて教えて下さい。
msg# 1.4.1
Tanda
投稿数: 2151
nkmtさん、
これはRollbackが掛かるというよりも、何か1つでもテーブル
をオープンすることによって、SQL側にトランザクション開始の
コマンドが送られるということなんだと思います。
私も勉強になりました。TKitabayashiさん、情報をありがとう
ございました。
これはRollbackが掛かるというよりも、何か1つでもテーブル
をオープンすることによって、SQL側にトランザクション開始の
コマンドが送られるということなんだと思います。
私も勉強になりました。TKitabayashiさん、情報をありがとう
ございました。
投票数:0
平均点:0.00
Re: トランザクションについて教えて下さい。
msg# 1.4
nkmt
投稿数: 1668
Kitabayasi様
はい、おっしゃる通り、実験では、子タスクでデータオープンせずに、孫タスクをコールしているだけでした。
トランザクションを開始するタスクで、更新には無関係なデータを宣言したりするだけでもRollbackかかるように出来るんですね。
トランザクション処理を行う全データを宣言しないといけないかと思いました。
それだと大変気を使いますもんね。
勉強になりました。実験でもその通りになりました。
皆様ありがとうございました。
はい、おっしゃる通り、実験では、子タスクでデータオープンせずに、孫タスクをコールしているだけでした。
トランザクションを開始するタスクで、更新には無関係なデータを宣言したりするだけでもRollbackかかるように出来るんですね。
トランザクション処理を行う全データを宣言しないといけないかと思いました。
それだと大変気を使いますもんね。
勉強になりました。実験でもその通りになりました。
皆様ありがとうございました。
投票数:0
平均点:0.00
Re: Re: トランザクションについて教えて下さい。
msg# 1.3.2.1
Tanda
投稿数: 2151
TKitabayashiさん、
貴重な情報をありがとうございました。
貴重な情報をありがとうございました。
投票数:0
平均点:0.00
Re: トランザクションについて教えて下さい。
msg# 1.3.2
TKitabayashi
投稿数: 90
解決しているところ、申し訳ございませんが、
RollBackしても孫タスクEだけしか戻らなかった時、
子タスクでは、孫タスクC,D,Eをコールしているだけではないでしょうか。
恐らく、子タスク内でテーブルを参照していなかったと思います。
子タスク内にテーブルがなければトランザクションが始まらないので、孫タスクC,D,Eはそれぞれ更新していることになります。
孫タスクで書き込むデータをD=宣言しなくても、
無関係なテーブルをD=宣言したり、照会リンクを作ったりしても
RollBackがかかると思います。
RollBackしても孫タスクEだけしか戻らなかった時、
子タスクでは、孫タスクC,D,Eをコールしているだけではないでしょうか。
恐らく、子タスク内でテーブルを参照していなかったと思います。
子タスク内にテーブルがなければトランザクションが始まらないので、孫タスクC,D,Eはそれぞれ更新していることになります。
孫タスクで書き込むデータをD=宣言しなくても、
無関係なテーブルをD=宣言したり、照会リンクを作ったりしても
RollBackがかかると思います。
投票数:2
平均点:10.00
Re: Re: トランザクションについて教えて下さい。
msg# 1.3.1
Tanda
投稿数: 2151
nkmtさん、
HAYATOさんのアドバイスで解決してよかったですね。
> 物理トランザクションは、DBMSの機能を利用してのトランザクション。
> 遅延トランザクションは、RIAなどでも実現出来るようMagic独自のトランザクション
> と考えてよろしいでしょうか?
はい、そうです。遅延は単なる、階層構造の持てるワークだと
考えると分かりやすいですよ。
HAYATOさんのアドバイスで解決してよかったですね。
> 物理トランザクションは、DBMSの機能を利用してのトランザクション。
> 遅延トランザクションは、RIAなどでも実現出来るようMagic独自のトランザクション
> と考えてよろしいでしょうか?
はい、そうです。遅延は単なる、階層構造の持てるワークだと
考えると分かりやすいですよ。
投票数:1
平均点:10.00
Re: トランザクションについて教えて下さい。
msg# 1.3
nkmt
投稿数: 1668
Tandaさん、HAYATOさん、明けましておめでとうございます。
いつもお世話になりありがとうございます。
本年もよろしくお願い致します。
試しました。
子タスクを P=物理トランザクションにして、
孫タスクで書き込むデータをD=宣言 したら、ちゃんとRollBackがかかりました。
どうもありがとうございました。
そういえばそんな事を教えてもらった事を思い出しました。
普段滅多にトランザクションを使わないものですから。
更新を行うデータを忘れずに全部宣言しとかないと、
中途半端にRollbackされるという事なんですね。
物理トランザクションは、DBMSの機能を利用してのトランザクション。
遅延トランザクションは、RIAなどでも実現出来るようMagic独自のトランザクション
と考えてよろしいでしょうか?
いつもお世話になりありがとうございます。
本年もよろしくお願い致します。
試しました。
子タスクを P=物理トランザクションにして、
孫タスクで書き込むデータをD=宣言 したら、ちゃんとRollBackがかかりました。
どうもありがとうございました。
そういえばそんな事を教えてもらった事を思い出しました。
普段滅多にトランザクションを使わないものですから。
更新を行うデータを忘れずに全部宣言しとかないと、
中途半端にRollbackされるという事なんですね。
物理トランザクションは、DBMSの機能を利用してのトランザクション。
遅延トランザクションは、RIAなどでも実現出来るようMagic独自のトランザクション
と考えてよろしいでしょうか?
投票数:1
平均点:10.00
Re: Re: トランザクションについて教えて下さい。
msg# 1.2.2
HAYATO
居住地: 大阪市淀川区西中島5-9-2
投稿数: 90
nkmtさん、明けましておめでとうございます。
本年も宜しくお願いします。
子タスクBで各孫タスクで更新するテーブルが書き込み(W) オープンされていなくて、トランザクションが子タスクBで開始していないのでは?
(つまり孫タスクC,D,E それぞれの個別トランザクションのみが、それぞれで開始している状態)
HAYATO@アインシュタイン設計社
本年も宜しくお願いします。
子タスクBで各孫タスクで更新するテーブルが書き込み(W) オープンされていなくて、トランザクションが子タスクBで開始していないのでは?
(つまり孫タスクC,D,E それぞれの個別トランザクションのみが、それぞれで開始している状態)
HAYATO@アインシュタイン設計社
投票数:1
平均点:10.00
Re: Re: トランザクションについて教えて下さい。
msg# 1.1.1
Tanda
投稿数: 2151
ISHIJIMAさん、
これは、遅延処理はすべてメモリ上で展開されるので、そのことを
留意したうえで使用するようにということだと思います。
メモリが十分にあって、メモリスワップもうまく行っているので
あれば、とくに問題ないと思います。
これは、遅延処理はすべてメモリ上で展開されるので、そのことを
留意したうえで使用するようにということだと思います。
メモリが十分にあって、メモリスワップもうまく行っているので
あれば、とくに問題ないと思います。
投票数:1
平均点:10.00
Re: Re: トランザクションについて教えて下さい。
msg# 1.2.1
Tanda
投稿数: 2151
nkmtさん、
これは私の勘なんですが、物理の場合はネストができませんので、
ひょっとすると孫でのRollbackは無視されるのかもしれません。
トランザクションを開始したタスク、つまり子タスクでRollbackを
掛けてみてください。
うまく行くといいのですが。
これは私の勘なんですが、物理の場合はネストができませんので、
ひょっとすると孫でのRollbackは無視されるのかもしれません。
トランザクションを開始したタスク、つまり子タスクでRollbackを
掛けてみてください。
うまく行くといいのですが。
投票数:1
平均点:10.00
Re: トランザクションについて教えて下さい。
msg# 1.2
nkmt
投稿数: 1668
バッチ子タスクB を 物理トランザクション
バッチ孫タスクC を W=親と同一
バッチ孫タスクD を W=親と同一
バッチ孫タスクE を W=親と同一
にして、孫バッチE で ROLLBACK をかけても
孫バッチC、孫バッチD で行った更新は、残ったままになります。
これそういう物なのでしょうか?
バッチ孫タスクC を W=親と同一
バッチ孫タスクD を W=親と同一
バッチ孫タスクE を W=親と同一
にして、孫バッチE で ROLLBACK をかけても
孫バッチC、孫バッチD で行った更新は、残ったままになります。
これそういう物なのでしょうか?
投票数:0
平均点:0.00
Re: トランザクションについて教えて下さい。
msg# 1.1
ISHIJIMA
居住地: 静岡県
投稿数: 1827
遅延で大量のデータをタスク前の前では使用しない方が良いと思いました。
ヘルプで「タスクレベルのトランザクションの使用」で検索してみて下さい。
注意:
遅延モードで動作させている場合は、トランザクションを「タスク前の前」で実行するようにはしないでください。これらの処理はキャッシュに保存されますが、キャッシュサイズには限りがあります。
ヘルプで「タスクレベルのトランザクションの使用」で検索してみて下さい。
注意:
遅延モードで動作させている場合は、トランザクションを「タスク前の前」で実行するようにはしないでください。これらの処理はキャッシュに保存されますが、キャッシュサイズには限りがあります。
投票数:1
平均点:10.00
トランザクションについて教えて下さい。
msg# 1
nkmt
投稿数: 1668
お世話になっております。
MagicのトランザクションとROLLBACKで恥ずかしながら教えて下さい。
データベースはMS SQLで以下のタスク構造だとします。
オンライン親タスクA(実行指示画面)
その下に バッチ子タスクB
孫バッチタスクC
孫バッチタスクD
孫バッチタスクE
孫バッチタスクEで矛盾発見した場合、
孫バッチ処理でC,D,Eの更新を全て取り止めたいとします。
実行指示画面は更新処理はないので
トランザクション=無しにします。
バッチ子タスクBを
D=遅延トランザクション
トランザクション開始を T=タスク前の前。
孫バッチタスクは、
トランザクションモードを W=親と同一
トランザクション開始を N=なし
孫バッチタスクE
の中で、アクション Rollback('FALSE'LOG,0)
以上実験上はうまくいっているのですが、懸念がありますでしょうか?
教えて下さい。
MagicのトランザクションとROLLBACKで恥ずかしながら教えて下さい。
データベースはMS SQLで以下のタスク構造だとします。
オンライン親タスクA(実行指示画面)
その下に バッチ子タスクB
孫バッチタスクC
孫バッチタスクD
孫バッチタスクE
孫バッチタスクEで矛盾発見した場合、
孫バッチ処理でC,D,Eの更新を全て取り止めたいとします。
実行指示画面は更新処理はないので
トランザクション=無しにします。
バッチ子タスクBを
D=遅延トランザクション
トランザクション開始を T=タスク前の前。
孫バッチタスクは、
トランザクションモードを W=親と同一
トランザクション開始を N=なし
孫バッチタスクE
の中で、アクション Rollback('FALSE'LOG,0)
以上実験上はうまくいっているのですが、懸念がありますでしょうか?
教えて下さい。
投票数:0
平均点:0.00