Domino Upgrade

VersionSupport end
Upgrade to 9.x now!
(see the full Lotus lifcyle) To make your upgrade a success use the Upgrade Cheat Sheet.
Contemplating to replace Notes? You have to read this! (also available on Slideshare)


Other languages on request.


Useful Tools

Get Firefox
Use OpenDNS
The support for Windows XP has come to an end . Time to consider an alternative to move on.

About Me

I am the "IBM Collaboration & Productivity Advisor" for IBM Asia Pacific. I'm based in Singapore.
Reach out to me via:
Follow notessensei on Twitter
Amazon Store
Amazon Kindle
NotesSensei's Spreadshirt shop

« Lotus Technical University, 25-27 August, Melbourne, Australia | Main| Distributed Document Locking Web Style »

Measuring performance when accessing a RDBMS from Domino

Accessing RDBMS from Notes applications is quite popular. One of our customer asked what is an acceptable performance when accessing an Oracle database from XPages. We discussed test patterns and approaches. Just running one type of test wouldn't give an accurate picture. The total time for a test run is compiled from the raw database access speed (mostly network and the local driver performance), the Java JDBC layer, the XPages engine and the application running on XPages. So you have to test all these components:

A complete system test has 4 phases
So how to test these (you could rip the steps apart on a scientific basis, but they hold steady for practicality). Never forget that the subject and object of an observation influence each other. The bare fact of measuring the performance changes it:
  1. Network and native library: You use the command line interface (in Oracle a terminal like window) to execute whatever query you want to test. Record the time. You can proably automate this using a tool like STAF. This is your base line. If that is already slow, you know network and database might be the problem already (and yes: you could run the test on the DB server too eliminating the network in between too).
  2. JDBC and Connection pool: You don't write your own Connection Pool manager? Using a few lines of Java again from the command line will show how your VM is doing and how well the JDBC driver talks to the native libraries. You would already have a class that implements the Java LIST interface (preferably as virtual list), so you can use that as a data source later on. Heap size is a good candidate to tweak performance here
  3. XPages engine: You have code in one button instantiating the class you already used in the previous step and execute the same queries. This will show you the difference between "raw" Java performance and the XPages engine
  4. Your XPages application: All your code is here, your events, your JavaScript. The difference to the previous step highlight optimization potential in your code
Don't forget: running a test once isn't real. you need to have multiple iterations and use tools like JMeter or Rational Performance Tester to simulate concurrent user load. As usual YMMV.


This site is in no way affiliated, endorsed, sanctioned, supported, nor enlightened by Lotus Software nor IBM Corporation. I may be an employee, but the opinions, theories, facts, etc. presented here are my own and are in now way given in any official capacity. In short, these are my words and this is my site, not IBM's - and don't even begin to think otherwise. (Disclaimer shamelessly plugged from Rocky Oliver)
© 2003 - 2015 Stephan H. Wissel - some rights reserved as listed here: Creative Commons License
Unless otherwise labeled by its originating author, the content found on this site is made available under the terms of an Attribution/NonCommercial/ShareAlike Creative Commons License, with the exception that no rights are granted -- since they are not mine to grant -- in any logo, graphic design, trademarks or trade names of any type. Code samples and code downloads on this site are, unless otherwise labeled, made available under an Apache 2.0 license. Other license models are available on written request and written confirmation.