[pgsql-jp: 30322] Re: ロック状態の取得

NAKAMURA Takeshi 1yen @ sh.rim.or.jp
2003年 7月 2日 (水) 11:33:59 JST


仲村@まともに使ったことがないのに知恵だけ付いてるやつです(^^;


On Wed, 02 Jul 2003 01:30:29 +0000,
 "Hideaki Kihara" <kihara_hideaki_net @ hotmail.com> wrote:

>>ロック状態を確認して待ち状態を回避する方法を探しております。
 確認する方法は...あるのかな?

> 現状、待ち状態を回避する方法として以下に着目して調査をしようと思っています。
>
> 「タイムアウト時間」と「処理のキャンセル」

http://search.net-newbie.com/pgsql/sql-lock.html に、
=======================
PostgreSQL はデッドロックを検出し、少なくても 1 つの待ち状態の
トランザクションを、デッドロックを解消するためにロールバックします。
このルールに厳密に従ったアプリケーションを作成するのが実用的で
ない場合は、トランザクションがデッドロックによってアボートした
場合に再試行するようにするという手段もあります。
=======================
と、いう文があります。よって、処理のキャンセルは自動的になされます。

そして http://search.net-newbie.com/pgsql/runtime-config.html に
===
DEADLOCK_TIMEOUT (整数)
=== 長いので略(^^;)


> 調査にあたり、イメージがつかめないので以下の質問に答えていただけませんでしょ
> うか?
> ・タイムアウト時間はどこで設定するのでしょう?
DEADLOCK_TIMEOUT を設定

> ・処理のキャンセルはSQLで行うのか。それとも特別なコマンドを使用するのか?
> (マニュアルもどこを参照して良いかわかりません(T-T))
サーバーが勝手に行う。SQL を実行中によそから割り込むことはできない。
# OS で kill しちゃ駄目(^^;;;;

> ・開発は「PQCOMPO(libpq.dll)」を使ってC++Builder5.0で行う予定にしています。
> 上記処理はPQCOMPO(libpq.dll)に実現できるのでしょうか?
 できない。サーバーが勝手に行うので、条件を事前に設定しておく。


 こんなところでどうでしょうか。
 デッドロックで調べると、もう少し分かると思います。
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+
 関西沖縄青年の集い がじまるの会 手伝い 一人だけの勝手に神奈川支部
 仲村 武 <1yen @ sh.rim.or.jp>




pgsql-jp メーリングリストの案内