On Fri, Mar 11, 2011 at 10:43:46PM -0500, Greg Stein wrote: > 2011/3/11 Branko Čibej <br...@e-reka.si>: > >... > > For the second task, I think the first order of business is to change > > the wc-db tree crawler to do one query instead of zillions, or at least, > > where several queries are required, to do them all in one transaction. > > stsp has been working this recently. Killing the node walker, and > moving to table scans.
Yes. So far, I've been working in the revision status code. There are two problems left to fix before I'll move on to the next task: - There are API layering issues (wc_db.c calls into node.c). This is related to the API discussions in the other thread so I'll follow up there. - The revision status code issues about 5 separate queries, which aren't combined via a transaction and don't use temporary tables. This is no worse than the previous code using the node walker, obviously :) But I'll look at fixing this so that the results returned correspond to the state of the DB as of the time the svn_wc__db_revision_status() call was made. For others who want to jump in and help, here is a list of places where the node walker is still being used. I'm not sure if we can eliminate it everywhere before release, but each of these should be looked at to see whether we can use an alternative approach to increase performance: subversion/libsvn_client/changelist.c subversion/libsvn_client/commit_util.c subversion/libsvn_client/info.c subversion/libsvn_client/merge.c subversion/libsvn_client/mergeinfo.c subversion/libsvn_client/prop_commands.c (This should be propget and propset. Proplist is already using queries involving temporary tables. Rewriting propget on top of the proplist code would be easy. Propset needs more work.) subversion/libsvn_client/ra.c subversion/libsvn_wc/update_editor.c