Return-Path: Delivered-To: apmail-couchdb-dev-archive@www.apache.org Received: (qmail 88022 invoked from network); 8 Mar 2011 03:57:26 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 8 Mar 2011 03:57:26 -0000 Received: (qmail 12987 invoked by uid 500); 8 Mar 2011 03:57:25 -0000 Delivered-To: apmail-couchdb-dev-archive@couchdb.apache.org Received: (qmail 12949 invoked by uid 500); 8 Mar 2011 03:57:25 -0000 Mailing-List: contact dev-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list dev@couchdb.apache.org Received: (qmail 12936 invoked by uid 99); 8 Mar 2011 03:57:25 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 08 Mar 2011 03:57:25 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 08 Mar 2011 03:57:24 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id 7355839C69F for ; Tue, 8 Mar 2011 03:57:03 +0000 (UTC) Date: Tue, 8 Mar 2011 03:57:03 +0000 (UTC) From: "Paul Joseph Davis (JIRA)" To: dev@couchdb.apache.org Message-ID: <441620751.3599.1299556623469.JavaMail.tomcat@hel.zones.apache.org> In-Reply-To: <823419600.3437.1299550079623.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] Commented: (COUCHDB-1084) Remove unnecessary btree lookup inside couch_db_updater MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ 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