PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
10268 00/02/14 20:12:03 RE(6):PB6: データベースの排他レベルについて(自己レス) By t.y
10250 00/02/11 12:30:53 RE(5):PB6: データベースの排他レベルについて By クロノス
10243 00/02/10 23:01:25 RE(4):PB6: データベースの排他レベルについて By M.M
10235 00/02/10 19:56:37 RE(3):PB6: データベースの排他レベルについて By てとらぽっと
10233 00/02/10 19:29:34 RE(2):PB6: データベースの排他レベルについて By t.y
10231 00/02/10 18:44:57 RE(1):PB6: データベースの排他レベルについて By どん
10225 00/02/10 16:22:46 PB6: データベースの排他レベルについて By t.y

カテゴリ:スクリプトの記述
日付:2000年02月10日 16:22 発信者:t.y
題名:PB6: データベースの排他レベルについて

皆様こんにちは。

ロックについて質問があります。過去ログは検索しましたが、
ちょっと私の知りたいのとは違う感じだったので、よろしくお願いします。

皆様は、データベースを使用する上で、排他レベルについては
どのような設定を行っているのでしょうか?
具体的には
1.CONNECT時のLOCKパラメータに指定する値は何が一番よい
  (一般的には、という意味です)のでしょうか?
2.整合性を保証する上ではどのようなロックが一番よいのでしょうか?
3.SQLCAオブジェクトを2つ作り、それぞれをCONNECTする場合の
  注意点があれば教えて下さい(この質問だけは、ついで的なものです)。

私は現在InformixのANSI標準指定されたDBを使用し、ODBC接続しています。
CONNECT時のSQLCAに特にLOCKパラメータを指定していません。

するとデフォルトの排他レベルは「直列化可能(繰返し読み込み)」になります。
これは例えばSELECTで選択された行に対しても共有ロックがかかるものなので、
アプリAがSELECTしている間にアプリBがそのSELECT対象のデータにUPDATEを
かけようとするとUPDATEが失敗してしまいます。(逆も同様、つまり
後から実行されたSQLが必ず負ける(SELECTであっても))

現在、某ERPパッケージの外付けシステムをPBで開発したのですが、
頻繁にERPまたは外付けが落ちてしまい、困っています。
外付けからERPのテーブルをアクセスするときにエラーになっており、
調査したところ、上記原因だろうというのはわかりました。
そこで、LOCKパラメータを
LOCK=\"RU\"(Read Uncommited)(排他しない)にしたところ、とりあえず
エラーは出なくなりました。(当たり前、といえば当たり前なのですが)
では、修正...と思ったのですが、こういう部分を安易に修正すると
整合性という観点からみて大丈夫なのか??と心配になりました。
こういったロックに関する知識があまりないので、皆さんは
(というか一般的には)どうしているのだろう?と思った次第です。
「そんな知識もない人間がアプリを云々...」といったお叱りはあると
思いますが、どうかよろしく御教授下さい。お願い致します。

長文になり大変失礼致しました。


付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows95
DBMS その他
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS INFORMIX-OnLine 7
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.