Динамическое выделение буфера для запроса БД в соответствии с фактическим размером записи
Я использую скрипт Perl 5.8.3 для запроса базы данных Oracle 11g. Соединение устанавливается с расширением ODBC для Win32:
http://search.cpan.org/~gsar/libwin32-0.191/ODBC/ODBC.pm
Как видно из документации (ссылка), размер буфера ограничен 10К. Этот размер буфера в некоторых случаях недостаточен (т. Е. Слишком мал).
- Выдержка из ссылки выше: "Объем памяти, выделенный для извлечения данных поля записи, является динамическим и изменяется, когда он должен быть больше". Я проверил это, и размер буфера не увеличивается с большими данными. Это просто ошибки. Есть ли какая-либо конфигурация / настройка / инициализация / передача параметров мне нужно сделать? Я что-то здесь упускаю?
- Каков срок службы выделенного буфера? Это на протяжении всей жизни открытого соединения?
- Я могу увеличить размер буфера с размером SetMaxBuffer до 2 ГБ. Но до какого размера? Слишком большое значение может поставить под угрозу стабильность сервера. Один из вариантов - получить длину строки (размер в байтах для фактических данных для всех столбцов записи. Не среднее значение), чтобы мы могли динамически выделить достаточный размер буфера. Есть ли простой способ сделать это, или я должен подсчитать сумму всех столбцов? Эта опция увеличит количество обращений к БД, но в данном конкретном случае это не проблема. Связанный: Oracle - Как я могу получить фактический размер определенного ROW? http://www.dba-oracle.com/t_get_length_of_row.htm
Заранее спасибо!