[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

RE: svn commit: r1353676 - in /subversion/trunk/subversion: include/private/svn_wc_private.h include/svn_ra.h libsvn_client/ra.c libsvn_ra_serf/update.c libsvn_wc/adm_ops.c

From: Bert Huijben <bert_at_qqmail.nl>
Date: Mon, 25 Jun 2012 20:24:40 +0200

> -----Original Message-----
> From: C. Michael Pilato [mailto:cmpilato_at_collab.net]
> Sent: maandag 25 juni 2012 20:09
> To: dev_at_subversion.apache.org
> Cc: Bert Huijben; commits_at_subversion.apache.org
> Subject: Re: svn commit: r1353676 - in /subversion/trunk/subversion:
> include/private/svn_wc_private.h include/svn_ra.h libsvn_client/ra.c
> libsvn_ra_serf/update.c libsvn_wc/adm_ops.c
>
> On 06/25/2012 02:04 PM, Bert Huijben wrote:
> > If we want to enable this code in 1.8 we should add an index on the
> > md5_checksum in the pristine table with the format bump for 1.8.
> >
> > Currently the md5 lookup performs a table scan (but is only used from the
> > deprecated libsvn_wc commit logic). For that 1.5 million file working
> > copy reported today on users_at_s.a.o, this code might be much slower than
> > just downloading the files again without an index.
>
> Ewww... yeah, table scan is no good. So what's involved in adding,
> populating, and maintaining such a new index?

Something like:
(I only tested the queries with the query test tool, not via the test suite)

[[
Following up on r1353676, introduce an index on the md5 checksum in the pristine
table.

* subversion/tests/libsvn_wc/wc-queries-test.c
  (slow_statements): Remove STMT_SELECT_PRISTINE_BY_MD5, as this now uses an
    index.

* subversion/tests/libsvn_wc/wc-queries-test.c
  (STMT_CREATE_SCHEMA): Add new index for new wc.db instances.
  (STMT_UPGRADE_TO_30): Add new index if it doesn't exist yet on the future
    bump to format 30.
]]

Index: subversion/tests/libsvn_wc/wc-queries-test.c
===================================================================
--- subversion/tests/libsvn_wc/wc-queries-test.c (revision 1353631)
+++ subversion/tests/libsvn_wc/wc-queries-test.c (working copy)
@@ -88,9 +88,6 @@
   STMT_LOOK_FOR_WORK,
   STMT_HAS_WORKING_NODES,
 
- /* Need index? */
- STMT_SELECT_PRISTINE_BY_MD5, /* Only used by deprecated api */
-
   /* Full temporary table read */
   STMT_INSERT_ACTUAL_EMPTIES,
   STMT_SELECT_REVERT_LIST_RECURSIVE,
Index: subversion/libsvn_wc/wc-metadata.sql
===================================================================
--- subversion/libsvn_wc/wc-metadata.sql (revision 1353631)
+++ subversion/libsvn_wc/wc-metadata.sql (working copy)
@@ -107,7 +107,8 @@
   md5_checksum TEXT NOT NULL
   );
 
-
+CREATE INDEX I_PRISTINE_MD5 ON PRISTINE (md5_checksum);
+
 /* ------------------------------------------------------------------------- */
 
 /* The ACTUAL_NODE table describes text changes and property changes
@@ -778,6 +779,8 @@
 CREATE UNIQUE INDEX IF NOT EXISTS I_NODES_MOVED
 ON NODES (wc_id, moved_to, op_depth);
 
+CREATE INDEX IF NOT EXISTS I_PRISTINE_MD5 ON PRISTINE (md5_checksum);
+
 /* Just to be sure clear out file external skels from pre 1.7.0 development
    working copies that were never updated by 1.7.0+ style clients */
 UPDATE nodes SET file_external=1 WHERE file_external IS NOT NULL;

-----
        Bert
Received on 2012-06-25 20:25:43 CEST

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.