[pgsql-jp: 26017] Re: ロックしているプロセスの確認
    daikin @ hkr.ne.jp
    daikin @ hkr.ne.jp
       
    2002年 5月 18日 (土) 14:46:34 JST
    
    
  
こんばんわ、ひらめ(野村 大樹)と申します。
石川さんwrote:
>  ロックしたプロセスを確認する方法は無いですか? 又そのプロセスの解放
> は KillでOKですか?
1. 件のプログラムがテーブルをロックしつつ何か処理中であれば、
select
    pg_stat_get_backend_pid(S.backendid) as procid
	,pg_stat_get_backend_activity(S.backendid) as current_query
from
	(select pg_stat_get_backend_idset() as backendid) as S
;
				
で、そのプロセスを判定できるんではないでしょうか。これはAdministrator's
guideから丸うつしの物です。
2. 処理中でない場合。
システムテーブルをみていたら、
>pg_xactlock              | special | postgres
というのがあり、
 
test=# \d pg_xactlock;
Special relation "pg_xactlock"
   Column    | Type 
-------------+------
 xactlockfoo | oid
	 
となっていました。contribのOIDからオブジェクト名に変換する奴で、
現在ロックされているテーブルが確認できないでしょうか?わかんない
のですが、、、
それでpostgres.confでsqlをログに吐かせるようにしておいて、LOG_PID
もtrueにしておいて、テーブル名で検索、探して、killするってゆう感じ
はどうでしょうか?
うーん、中途半端ですいません。
ではでは。
    
    
pgsql-jp メーリングリストの案内