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