Включить Polling для unixODBC

Доброго всем времени суток. Очередная заметка, пока есть желание пографоманить и чуточку времени. Итак, мы хотим включить pooling в запросах через unixODBC. Для чего это может понадобиться — сейчас кратко распишу. Например, у нас есть приложение «А» которое делает запросы в базюку «Б». Приложение А вообще не знает ничего про pooling а просто обращается в unixODBC, который уже в свою очередь дергает библиотеки драйвера (в нашем случае libsqora). Так вот unixODBC может селектнуть в базюке, забрать вывод и закрыть подключение к базе. Через какое то время (иногда меньше секунды) операция повторяется. И правильно: открывается новое соединение к базе и все вытекающие. А если таких подключений сотни, а если тысячи? Не очень как то. Поэтому на стороне unixODBC мы можем включить pooling и не закрывать соединение с базой.

Делается это довольно просто.

# Example driver definitions
[ODBC]
Trace = No
#Trace File = /tmp/sql.log
Pooling = Yes

Здесь мы глобально в /etc/odbcinst.ini сделали доступным pooling (но это не делает его используемым)

/etc/odbcinst.ini
[Oracle12p]
Description=Oracle ODBC driver for Oracle 12g 64bit
Driver=/usr/lib/oracle/12/lib/libsqora.so.12.1
CPTimeout = 300
DontDLClose = 1

Здесь мы объявили в системе драйвер с pooling, который позже можем использовать в

/etc/odbc.ini

когда описываем подключение к базюкам.

Оцените статью