Yanick has just released a new development release of DBD::Oracle DBD-Oracle-1.43_00. As I mentioned in my blog a week or so ago, this release has a huge number of lines of code changed to remove the use of DBIS (see Changes to make DBIS more efficient and speeding up XS_DBI_dispatch()). This release removes the last few DBIS calls. As a result, if you are using a Perl built for threads (useithreads=define) this release is significantly faster than previous releases.
I've seen CPU usage nearly halved on fetches of large numbers of rows and I've had reports where people are doing lots of different selects for small numbers of rows of up to 10* quicker.
If you depend on DBD::Oracle you are strongly advised to try this version as this was over a 160K diff when I checked it in. If you notice anything broken please post an example to the dbi-users list.
A list of changes in this release is:
- Applied patch from Rafael Kitover (Caelum) to column_info to handle
DEFAULT columns greater in length than the DBI default of 80. The
DEFAULT column is a long and it is a PITA to have to set
LongReadLen which you can only do on a connection handle in
DBD::Oracle. The default maximum size is now 1Mb; above that you
will still have to set LongReadLen (Martin J. Evans)
- Fixed 70meta and rt74753-utf8-encoded to not die if you cannot
connect to Oracle or you cannot install from CPAN if you have not
set up a valid Oracle connection.
- Fixed 75163. Bfile lobs were not being opened before fetching if
ora_auto_lobs was disabled (Martin J. Evans).
Note: this has a minor impact on non bfile lobs when ora_auto_lobs
is not in force as an additional call to OCILobFileIsOpen will be
- Removed all DBIS usage fixing and speeding up threaded
Perls (Martin J. Evans).
- Minor fix to avoid use of uninitialised variable in 31lob.t (Martin J. Evans)
- clarification of when StrictlyTyped/DiscardString can be used and
LongReadLen (Martin J. Evans)
- Documented the 3rd type of placeholder and rewrote the existing
pod for placeholders (Martin J. Evans).