2011-05-16 15 views
0

私はPGに格納されたURLのリストを持つテーブルを持っています。私は、利用可能なURLのサブセットをとり、それらを処理するはずのアプリケーションを持っています。このアプリケーションは、一連のURLを取得するときに処理されたフィールド= trueを更新します。私は別のマシン上で複数のインスタンスを稼働させるつもりです。 PGへのアクセスを排他的にするにはどうすればよいのですか?別のマシンで同じURLを使用することはありませんか?PythonまたはPostgres経由でPostgreSQLテーブルへの排他的アクセス

答えて

2

あなたはPostgreSQLで、複数の方法で行をロックすることができますテーブルレベルロック、行レベルのロック、および諮問ロック。あなたのケースでは

http://www.postgresql.org/docs/9.0/static/explicit-locking.html

あなたが良い並行処理をしたい場合は、しかし、ロックが十分であることを行っていない:余分なprocessingフィールドが異なる上で動作するように複数のジョブを持っていることを可能にする

update links 
set processing = true 
where id in (
    select id 
    from links 
    where not processed 
    and not processing 
    limit 100 
    for update 
) 
returning * 

行のセット。

関連する問題