[
https://issues.apache.org/jira/browse/COUCHDB-1084?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13003800#comment-13003800
]
Paul Joseph Davis commented on COUCHDB-1084:
--------------------------------------------
First, a tsk tsk. There's a noticeable amount of changes that aren't actually
related to the patch that make it difficult to review. I don't want to hamper
my image as a crotchety oldtimer so I can't not point that out.
The general idea seems to be pretty good. Passing a function down to the btree
modification seems like it could have a notable impact on updates to avoid the
double traversal in cases where its a row oriented update. Though the specific
implementation of passing a bunch of {Key, ModifyFun} pairs makes me a bit
squeamish. I'd like to see an investigation of passing a ModifyFun that has a
signature of something like fun(Key, OldVal, NewVal, Acc) and returns the value
to be inserted. Also, if I read the patch correctly, it effectively prevents
the atom nil from being used as a key which seems odd.
Either way, I'm definitely +1 on exploring the idea here. It'd be good to start
doing some initial performance testing to see what we might expect for
improvements.
> Remove unnecessary btree lookup inside couch_db_updater
> -------------------------------------------------------
>
> Key: COUCHDB-1084
> URL: https://issues.apache.org/jira/browse/COUCHDB-1084
> Project: CouchDB
> Issue Type: Improvement
> Components: Database Core
> Affects Versions: 1.2
> Reporter: Damien Katz
> Assignee: Damien Katz
> Attachments: remove_btree_lookup.patch
>
>
> The CouchDB update process has an unnecessary btree lookup, where it reads
> the values in bulks, checks for conflicts, writes the docs to disk, updates
> the values appropriately and writes them to the btree out in a second step.
> It's possible to avoid this second step, and instead do all the checking, doc
> writing and value transformation in a single btree lookup, thereby reducing
> the number of btree traversals and disk IO.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira