2012-09-24 6 views
5

私はCouchDBビューAPIのstale=update_after機能がどのように機能するのか不思議です。CouchDBのstale = update_afterのパフォーマンスは?

私はそれが古くなった結果を返し、その後、ビューを更新することをhereを見ることができます:

古い= OKが設定され、CouchDBのは、それが古くなっている場合でも、表示を更新しない場合、利益が改善されますクエリ待ち時間。 stale = update_afterが設定されていると、古い結果が返された後にCouchDBがビューを更新します。 update_afterがバージョン1.1.0で追加されました。ビューのインデックスを更新するのに数分を必要とするのに十分な - -

は、私は、文書のいくつかの大規模な数が挿入されていると仮定し、私はstale=update_afterですばやく2回ビューを問い合せます。最初のクエリは非常に迅速に返されます。それはupdate_afterの全体のポイントです。

質問2番目のクエリでも古い結果がすぐに返されますか、またはビューの更新が完了するのを待ちますか?

答えて

5

2番目のクエリは、古い結果も返します。クエリがサーバーにヒットした時点で利用可能な部分的な結果が使用されます。ドキュメントを追加したばかりの場合は、問題ありません。

ビューを変更した場合、最初のクエリは最初のクエリの結果を返し、ビューの完全な再構築をトリガします。したがって、2番目のクエリでは結果が得られないか、またはほとんど行が得られないでしょう。

あなたのケースでは、両方のクエリがすぐに返され、2番目のクエリは最初のクエリと同じ結果をもたらす可能性があります。

希望すると助かります!

ユアーズ、ベルンハルト

+1

あなたはこの主張を持つあなたの主張調整できます:「これは、結果が返されますが、表示の更新が完了するまで、他のクライアントからの問い合わせを遅らせるかもしれ後にインデックスを更新します」 (http://blog.safaribooksonline.com/2012/03/14/improving-couchdb-performance/) –

+2

遅く返事を申し訳ありません:stale = update_afterすぐにすぐに戻ります。 "他のクライアント"がstale = update_afterを使用していない場合、そのクエリは遅延されます。とにかく質問が遅れるので、これは少し誤解を招きます。 –

+0

ベルンハルトに再びこれに応答してくれてありがとう。これがいつも戻ってくることが分かっているので、私は多くの助けになりました。 – Christian