JDBC Type 4 Driver Programmer's Reference for SQL/MX Release 3.2 (H06.25+, J06.14+)
Guidelines for Statement Pooling
• To enable statement pooling, set the maxStatements property to an integer value greater
than 0 and enable connection pooling. See Connection Pooling for more information.
• Enabling statement pooling for your JDBC applications might dramatically improve the
performance.
• Explicitly close a PreparedStatement by using the Statement.close method because
PreparedStatement objects that are not in scope are also not reused unless the application
explicitly closes them.
• To ensure that your application reuses a PreparedStatement, call either of the following:
◦ Statement.close method—called by the application
◦ Connection.close method—called by the application. All the PreparedStatement
objects that were in use are ready to be reused when the connection is reused.
Troubleshooting Statement Pooling
Note the following Type 4 driver implementation details if you are troubleshooting statement
pooling:
• Type 4 driver looks for a matching PreparedStatement object in the statement pool and
reuses the PreparedStatement. The matching criteria include the SQL string, current
catalog, current schema, current transaction isolation, and resultSetHoldability. If the
Type 4 driver finds the matching PreparedStatement object, the driver returns the same
PreparedStatement object to the application for reuse and marks the
PreparedStatement object as in use.
• The algorithm, "earlier used are the first to go," is used to make room for caching subsequently
generated PreparedStatement objects when the number of statements reaches the
maxStatements limit.
• The Type 4 driver assumes that any SQL CONTROL statements in effect at the time of execution
or reuse are the same as those in effect at the time of SQL/MX compilation. If this condition
is not true, reuse of a PreparedStatement object might result in unexpected behavior.
• You should avoid SQL/MX recompilation to yield performance improvements from statement
pooling. The SQL/MX executor automatically recompiles queries when certain conditions are
met. Some of these conditions are:
◦ A run-time version of a table has a different redefinition timestamp than the compile-time
version of the same table.
◦ An existing open operation on a table was eliminated by a DDL or SQL utility operation.
◦ The transaction isolation level and access mode at execution time is different from that
at the compile time.
For more information on SQL/MX recompilation, see the HP NonStop SQL/MX Release 3.2
Programming Manual for C and COBOL or the SQL/MX Programming Manual for Java.
• When a query is recompiled, the SQL/MX executor stores the recompiled query; therefore,
the query is recompiled only once until any of the previous conditions are met again.
• The Type 4 driver pools CallableStatement objects in the same way as
PreparedStatement objects when the statement pooling is activated.
• The Type 4 driver does not cache Statement objects.
Statement Pooling 27










