2012-09-24 25 views
5

Tengo curiosidad sobre cómo funciona la característica stale=update_after de la API de vista CouchDB.¿Cuál es el rendimiento del estado pasado de CouchDB = update_after?

puedo ver here que devuelve resultados rancios y luego actualiza la vista:

Si rancio = OK toma el valor, CouchDB no actualizará la vista, incluso si está demasiado cargado, el beneficio es un una mejora latencia de consulta. Si se establece stale = update_after, CouchDB actualizará la vista una vez que se devuelva el resultado obsoleto. update_after fue agregado en la versión 1.1.0.

Supongamos que he insertado alguna gran número de documentos - lo suficiente para requerir varios minutos para actualizar el índice de vista - y luego consultar la vista dos veces en rápida sucesión con stale=update_after. La primera consulta volverá muy rápido; ese es el objetivo de update_after.

Mi pregunta es, ¿la segunda consulta también devolverá resultados obsoletos rápidamente, o esperará a que la vista termine de actualizarse?

Respuesta

5

La segunda consulta también devuelve resultados obsoletos. Utiliza los resultados parciales que están disponibles en el momento en que la consulta llega al servidor. Si acabas de agregar documentos, estás bien.

Pero si ha modificado su vista, la primera consulta devolverá los resultados de la primera consulta y activará una reconstrucción completa de la vista. Entonces, la segunda consulta probablemente no arroje resultados o solo unas pocas filas.

Así que la respuesta corta: en su caso, ambas consultas volverán rápidamente, con la segunda consulta probablemente dando el mismo resultado que la primera, tal vez con algunas filas adicionales.

Espero que pueda ayudar!

Suyo, Bernhard

+1

cómo conciliar su demanda con esta afirmación: "Esto actualiza el índice después se devuelven los resultados, sino que también pueden retrasar las consultas realizadas por otros clientes hasta que la actualización se ha completado vista" (http://blog.safaribooksonline.com/2012/03/14/improving-couchdb-performance/) –

+2

Disculpe la última respuesta: stale = update_after SIEMPRE regresa inmediatamente. Si "los otros clientes" no están usando stale = update_after, sus consultas se retrasaron. Pero esto es un poco engañoso, porque sus consultas se retrasarían de todos modos. –

+0

gracias por responder a esto de nuevo Bernhard. Sabiendo que esto volvería SIEMPRE me ayudó mucho. – Christian

Cuestiones relacionadas