[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 メーリングリストの案内