Прежде чем я получу "ты пробовал ODP.net?" ответы, да, я имею и использую это сейчас.
Я перемещаю данные с оракула на сервер SQL (не важно) и использую программу чтения данных при подключении к оракулу. Большие столы ползут. Иногда так плохо, как 10 записей в секунду. Когда я заметил проблемы с производительностью, я сократил исходный код до выполнения простых вызовов Reader.Read () по всей таблице, поэтому ничто иное не замедляет его. Я пробовал и MS и Oracle ODP .net клиентов. В настоящее время я использую 11g Instant Client, 64bit на win7 64bit, оперативную память на 8 гигов и все вкусности. Я использовал его в локальной сети, и в настоящее время я использую VPN, и производительность в основном такая же. Я настроил размеры Prefetch без результатов.
Я могу запустить функцию «Экспорт данных» в инструментах Oracle Sql DEveloper и экспортировать все данные для всей базы данных на той же машине, в той же сети, примерно в 100 раз быстрее.
Я могу скопировать свое приложение .net на сервер оракула и запустить на нем тот же тест производительности, и он заканчивается менее чем за секунду.
Таким образом, это не сама сеть, которая работает медленно, и это не количество данных (как продемонстрировал экспорт SqlDeveloper), и это не сам код .net и не oracle db (как продемонстрировано при его запуске на сервере). ), так что это должна быть какая-то комбинация Datareader, используемая в любой сети.
Это моя мгновенная установка клиента? Полноценный клиент работает лучше? 64-битный клиент все портит? Действительно в растерянности.
ОБНОВЛЕНИЕ:
С тех пор я запускаю то же самое приложение, скомпилированное для 32-разрядных, и запускаю на виртуальном компьютере экземпляр Windows XP, на котором установлен «полный» клиент Oracle (очевидно, 32-разрядная версия). Даже при сниженной производительности виртуальной машины она по-прежнему работала почти в 10 раз быстрее. Итак, определенно какая-то проблема с клиентом Instant, и я предполагаю, что именно 64-битный клиент Instant. Последним тестом, подтверждающим это, будет установка 32-разрядного мгновенного клиента на эту же машину и запуск его снова. Если я найду время ...