[
https://issues.apache.org/jira/browse/JCR-1253?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12553581
]
Jukka Zitting commented on JCR-1253:
------------------------------------
If autocommit is disabled, you will need to explicitly commit all selects.
Otherwise you'll end up with a read transaction that just keeps growing until
you save something. I don't believe many databases deal that well with large
long-lived transactions The only ways out of this are either to explicitly
commit also the select operations, which costs a separate network round trip
per each read operation, or to drop the transaction isolation level to READ
COMMITTED or lower.
> And I still don't understand how autoCommt mode of private sql connection
> could affect
> jackrabbit cluster, could anyone explain this ?
If you disable autocommit mode but don't explicitly commit the select
operations, then (with REPEATABLE READ or higher isolation levels) the
underlying database will need to lock all the rows accessed until the
transaction is committed.
The reason why you typically don't see commits after JDBC read operations is
that especially in J2EE environments you normally use a connection pool to
acquire and release a connection for each operation. This way the transaction
context never (unless explicitly requested) spans multiple operations.
The way I see it, your proposal would require us to add explicit commit() calls
to all read operations, which unfortunately is far worse than any benefit for
write operations.
> 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.4
> Reporter: Przemo Pakulski
> Priority: Minor
> Fix For: 1.4
>
> Attachments: JCR-1253.patch, 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.