[ 
https://issues.apache.org/jira/browse/JCR-1253?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12547849
 ] 

Przemo Pakulski commented on JCR-1253:
--------------------------------------

Notice, that I marked this improvement as MINOR, it does not affect overall 
performance a lot. I simply don't like switching autoCommit mode every time if 
it is not really needed (2 more chances to get SQLException :-))

Here is example code you can use (change log is small):

                Credentials credentials = new SimpleCredentials("admin", "admin"
                                .toCharArray());
                Session session = repository.login(credentials);
                Node testNode = session.getRootNode().addNode("testNode");
                session.save();
                for (int i = 0; i < 10000; i++) {
                        testNode.setProperty("int", i);
                        testNode.save();
                }
                session.logout();

with this test handling of autoCommit mode takes about 25% of the time of store 
method, basing on profiler reports. I'm testing 1.3.3 but there is no much 
difference I think.

> Allow to configure autoCommit mode for BundleDB PM to avoid extra overhead 
> when working in non clustered environment
> --------------------------------------------------------------------------------------------------------------------
>
>                 Key: JCR-1253
>                 URL: https://issues.apache.org/jira/browse/JCR-1253
>             Project: Jackrabbit
>          Issue Type: Improvement
>          Components: jackrabbit-core
>    Affects Versions: 1.3.3, 1.4
>            Reporter: Przemo Pakulski
>            Priority: Minor
>             Fix For: 1.4
>
>         Attachments: single_checkin.JPG, small_change_log.JPG
>
>
> BundleDB PMs keeps connection open in autoCommit mode and during every store 
> operation turn off/on this flag introducing some overhead.
> '... the reason is that in a clustered environment, the 'select' statements
> must be committed as well,  otherwise the tables remain locked. and
> instead of explicitly commit each time after a read, we used the
> autocommit as default and switch it off during store ...'
> We could add additional parameter which allows to configure autoCommit mode, 
> by default it could work as before, but specifing additional parameter will 
> change the behaviour.
> It's hard to say about exact numbers how much overhead it is, there are to 
> many variables (network speed/latency, db server type, jdbc driver, change 
> log size). For sure it means 2 extra network calls, which could be easily 
> avoided.
> See attached example screen from JProfiler using MSSQL server, and small 
> change logs; overhead is about 20%. Doing simple checkin on versionable node 
> it could be even 40%.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to