Доброго всем времени суток. Очередная заметка, пока есть желание пографоманить и чуточку времени. Итак, мы хотим включить 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
когда описываем подключение к базюкам.