db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (Updated) (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (DERBY-5695) Speed up population of tables in OrderByAndSortAvoidance
Date Thu, 19 Apr 2012 12:50:42 GMT

     [ https://issues.apache.org/jira/browse/DERBY-5695?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Knut Anders Hatlen updated DERBY-5695:
--------------------------------------

    Attachment: d5695-1a.diff

Attaching a patch that makes OrderByAndSortAvoidance populate the two large tables (table1
and table2) using prepared statements that are reused.

The test runs about three times faster in my environment with this patch applied. On my workstation
the time is reduced from 24 seconds to 8 seconds. On a somewhat less powerful machine where
I sometimes run tests, the time is reduced from 5 minutes to 1.5 minutes.

As an extra bonus, the test is now almost 7000 lines shorter. :)

For good measure, I also removed the following unnecessary calls in decorateSQL():

    getConnection().setAutoCommit(false);
...
    getConnection().commit();
    st.close();

That these calls are unnecessary can be seen from the javadoc for the super-method, CleanDatabaseTestSetup.decorateSQL():

     * Once this method returns the statement will be closed,
     * commit called and the connection closed. The connection
     * returned by s.getConnection() is the default connection
     * and is in auto-commit false mode.
                
> Speed up population of tables in OrderByAndSortAvoidance
> --------------------------------------------------------
>
>                 Key: DERBY-5695
>                 URL: https://issues.apache.org/jira/browse/DERBY-5695
>             Project: Derby
>          Issue Type: Improvement
>          Components: Test
>    Affects Versions: 10.9.0.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
>            Priority: Minor
>         Attachments: d5695-1a.diff
>
>
> OrderByAndSortAvoidance executes about 3000 INSERT and UPDATE statements to populate
table1 and table2 in its decorateSQL() method. Since each of the statements has to be parsed
and compiled, this could take quite some time on less powerful hardware.
> There are essentially three kinds of statements, and they could be parametrized like
this:
> INSERT INTO table1 VALUES (?)
> INSERT INTO table2 VALUES (?,?,?)
> UPDATE table2 SET value='true' WHERE id=? AND name='has_address'
> We should parametrize the statements, prepare them once and execute them multiple times
in order to speed up the test.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message