For all our Oracle 9i users out there:

Oracle has a special style of batching which is higher performance than normal JDBC 
batching. See http://technet.oracle.com/products/oracle9i/daily/jun07.html for more 
information.

No special configurations are required, just make sure Batching is set to on in your 
connection information (repository_database.xml)
ie. 
<jdbc-connection-descriptor
                jcd-alias="default"
                default-connection="true"
                platform="Oracle9i"
                jdbc-level="2.0"
                driver="oracle.jdbc.driver.OracleDriver"
                protocol="jdbc"
                subprotocol="oracle"
                dbalias="thin:@machine:1521:SID"
                username="user"
                password="password"
                eager-release="false"
                batch-mode="true"
                useAutoCommit="1"
                ignoreAutoCommitExceptions="false">

and use the new Oracle9i Platform setting in your build.properties
ie.

profile=oracle9i

The implementation in the PlatformOracle9iImpl uses reflection to try and find the 
Oracle specific batching methods. It will degrade gracefully to use the default JDBC 
batching if the methods are not found.

If your PreparedStatements are wrapped (ie you obtain connections from a JDBC pool in 
JBOSS) the Oracle batching will not work, as it won't find the methods. This will not 
be an issue after I check in the JCA connector, as you will use a raw connection and 
raw preparedstatements rather than from the app servers datasource (much easier to 
debug!). Just waiting for Thomas to tell me how/when to check that stuff in :)

example results:

PersistenceBroker API with Oracle style Batching
[ojb] [performance] INFO: inserting 2500 Objects: 329 msec
[ojb] [performance] INFO: updating 2500 Objects: 406 msec
[ojb] [performance] INFO: deleting 2500 Objects: 391 msec
[ojb] [performance] INFO:
[ojb] [performance] INFO: inserting 2500 Objects: 344 msec
[ojb] [performance] INFO: updating 2500 Objects: 406 msec
[ojb] [performance] INFO: deleting 2500 Objects: 375 msec

Raw JDBC with no batching
[jdbc] [performance] INFO: inserting 2500 Objects: 1188 msec
[jdbc] [performance] INFO: updating 2500 Objects: 1187 msec
[jdbc] [performance] INFO: deleting 2500 Objects: 954 msec
[jdbc] [performance] INFO:
[jdbc] [performance] INFO: inserting 2500 Objects: 1203 msec
[jdbc] [performance] INFO: updating 2500 Objects: 1171 msec
[jdbc] [performance] INFO: deleting 2500 Objects: 954 msec

OJB is no slouch ;)

cheers,
Matthew

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to