Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Данные из clob посредством odp.net  [new]
UVG
Member

Откуда:
Сообщений: 116
Доброе время суток.

С Oracle практически не знаком.Для одной разовой задачи приходится получать данные типа SDO_Geometry в приложении на .net.
SDO_Geometry преобразуется в Wkt, т.к. непосредственного аналога SDO_Geometry в odp.net я не нашёл.
В сети есть кастомные объекты, чтобы SDO_Geometry можно было получить через odp.net, но этим пока не занимались.
Вопрос в производительности получения данных типа CLOB/BLOB.
Сам запрос выполняется сервером достаточно быстро (заметно меньше секунды).
А вот получить данные на клиенте с помощью OracleDataReader (сборка Oracle.ManagedDataAccess.dll) ,быстро не получается.
Вернее, чтение данных типа number , varchar2 и т.д. и т.п. (не CLOB/BLOB) происходит приемлемое время, а вот CLOB/BLOB безумно тормозят.
Данные такие: примерно 50000 записей. Получаем только id (number) и shape (SDO_Geometry).Общий объём данных порядка 150мб
Такой же объём данных (не записей, а именно объём данных) составленный из varchar2 читается в разы быстрее (clob-ы могут читаться до нескольких минут, а "простые" данные-несколько секунд).
Попытки прочитать CLOB осуществлялись разными методами класса OracleDataReader (Например: GetOracleClob,GetTextReader). Пытались поменять FetchSize.
Сами функции (например GetOracleClob) отрабатывают быстро, но они, похоже, не читают тело clob, а скорее, только адрес и далее если читать сам clob, то всё проседает.
Аналогичные данные, но на PostgreSql, на тех же самых каналах читаются в разы быстрее.
На Oracle более-менее приемлемую производительность чтения данных удалось получить только преобразуя данные в xml , с группировкой по 5 тыщ, тогда происходит меньше итераций чтения и всё более-менее работает, а запрос на сервере, повторюсь, работает быстро.
Не подскажите , что можно попробовать для увеличения производительности чтения CLOB/Blob?
6 сен 19, 12:57    [21965278]     Ответить | Цитировать Сообщить модератору
 Re: Данные из clob посредством odp.net  [new]
Fogel
Member

Откуда:
Сообщений: 378
UVG
Попытки прочитать CLOB осуществлялись разными методами класса OracleDataReader (Например: GetOracleClob,GetTextReader).
...
Не подскажите , что можно попробовать для увеличения производительности чтения CLOB/Blob?

Кошерная документация указывает, что надо использовать:
для CLOB - переменную типа String (для 150 мб максимальной размерности хватит с избытком для любой кодировки) и метод GetString;
для BLOB - массив byte[] и метод GetBytes (заполнение в цикле)

см. пример кода и подробную документацию здесь
7 сен 19, 01:22    [21965815]     Ответить | Цитировать Сообщить модератору
 Re: Данные из clob посредством odp.net  [new]
UVG
Member

Откуда:
Сообщений: 116
Fogel
Кошерная документация указывает, что надо использовать:
для CLOB - переменную типа String (для 150 мб максимальной размерности хватит с избытком для любой кодировки) и метод GetString;


Спасибо.
Эти методы тоже рассматривались, но результат плачевный.
Возможно, есть какие-то опции для работы с clob-ами Oracle или, может быть, лучше использовать какой-нибудь другой провайдер?
Не обязательно для .net. Мы можем воспользоваться и чем-нибудь другим, а потом подцепить как сервис, возможно так буде быстрее.
Просто, хотелось бы , использовать технологию, которая, гарантированно, даёт приемлемые результаты.
Если кому приходится тянуть несколько десятков тысяч clob-ов за раз, то что используете?
9 сен 19, 11:54    [21966699]     Ответить | Цитировать Сообщить модератору
 Re: Данные из clob посредством odp.net  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51804

UVG
что используете?

OCI.

Posted via ActualForum NNTP Server 1.5

9 сен 19, 12:21    [21966731]     Ответить | Цитировать Сообщить модератору
 Re: Данные из clob посредством odp.net  [new]
UVG
Member

Откуда:
Сообщений: 116
Dimitry Sibiryakov
UVG
что используете?

OCI.


Спасибо, попробуем.
9 сен 19, 12:29    [21966744]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить