JDBC Driver for SQL/MX Programmer's Reference
Troubleshooting Statement Pooling
Note the following JDBC/MX driver implementation details if you are troubleshooting statement
pooling:
JDBC/MX 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
JDBC/MX driver finds the matching PreparedStatement object, JDBC/MX 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.
●
JDBC/MX 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 SQL/MX 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.
●
JDBC/MX driver pools the CallableStatement objects in the same way as
PreparedStatement objects when the statement pooling is activated.
●
JDBC/MX driver does not cache Statement objects.●