Package: unixodbc
Version: 2.3.1-3.2cuculus
Severity: normal

Dear Maintainer,

we are building long-running services that in some larger setups operate with
dozens of parallel database connections and prepare several hundred
statements on each of these connections. Hence we are often in situations
were we have several thousand active statement handles in flight within
the unixODBC driver manager.

However, we did notice that peformance degrades significantly in these
configurations as all of our threads are effectively serialized on a single
lock within the unixODBC driver manager. This lock seems to be used to protect
a singly-linked list of all valid statement handles within the driver manager
which is used to return an error code to the calling application if it tries to
use a statement handle that was not yet allocated is already freed. This O(N)
look-up together with the cache misses from the singly-linked list seems to
make this a performance bottleneck in our use case.

The above validation scheme can be disabled at build time by passing the
--enable-fastvalidate flag to the configure script. We do this using a rebuild
of the Debian package and the performance characteristics are now as expected.

Since passing an invalid handle to the driver manager can only happen if the
calling application has a programming error, we would characterize the default
behaviour as a debugging feature not really suitable for production use. We
therefore kindly request to include the --enable-fastvalidation build time
option in the official Debian package. Thank you for time and effort.

-- System Information:
Debian Release: 8.3
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.16.0-4-amd64 (SMP w/4 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages unixodbc depends on:
ii  libc6             2.19-18+deb8u3
ii  libodbc1          2.3.1-3.2cuculus
ii  libreadline6      6.3-8+b3
ii  odbcinst1debian2  2.3.1-3.2cuculus

unixodbc recommends no packages.

unixodbc suggests no packages.

-- no debconf information

Reply via email to