Oracle ODP.net управляемый против неуправляемого драйвера
Существуют ли показатели производительности между управляемыми и неуправляемыми драйверами Oracle ODP.Net?
(т. е. есть ли какое-либо преимущество при переходе к управляемому драйверу, кроме как для упрощения архитектуры / развертывания)
5 ответов
Я хотел бы поделиться некоторыми результатами. Я думаю, что небольшой недостаток производительности стоит по сравнению с простотой развертывания.
Замечания: seg
означает секунды. Извини за это.
Конечно, это простой тест, и есть несколько не затронутых тем, таких как пул соединений, стабильность, надежность и так далее...
Важно отметить, что сценарии были выполнены 100 раз. Таким образом, количество времени является средним из этих 100 казней.
Пули из видео быстрого старта:
- Меньше файлов (максимум 1 или 2)
- Меньшая занимаемая площадь (10 МБ по сравнению с 200 МБ)
- Более легкое параллельное развертывание
- Та же сборка для 32 и 64 бит (кроме второй сборки МТС).
- Безопасность доступа к коду
Я не уверен в производительности, но я сомневаюсь, что она будет сильно отличаться в любом случае. Я предполагаю, что эти два драйвера взаимодействуют одинаково через "Oracle Net". Хотя могут быть незначительные различия в операциях на стороне клиента в памяти, выполняемых для подготовки команды и обработки результатов, эти накладные расходы обычно представляют лишь долю времени относительно всей транзакции. Большая часть затрат / времени тратится на сервер в физическом IO и передаче данных обратно клиенту. Это просто не то же самое, что переход от поставщика oledb или драйвера System.DataAccess.OracleClient. Это еще одна версия от той же компании RDBMS - они собираются использовать все те же трюки производительности, которые использовал их другой клиент. Я хотел бы опубликовать исследование, но я бы предположил, что такой вещи не существует, потому что в конечном итоге это было бы ничем не примечательным. Случай без новостей - хорошая новость - если бы новый провайдер был чем-то хуже, вы бы об этом читали.
Простота является достаточной причиной, чтобы перейти на эту ИМО. Подавляющее большинство разработчиков и администраторов не до конца понимают поставщика и его отношение к неуправляемому клиенту. Постоянно возникает путаница в отношении предпочтений оракула, несоответствия версий, обновлений и т. Д. Устранить эти вопросы было бы желанным изменением.
Вот гоча для всех вас, ребята. Мне потребовалось пару недель, чтобы понять, почему драйверы Oracle Managed не подключаются с помощью ef6. Если ваша база данных имеет следующие алгоритмы целостности данных, вы ДОЛЖНЫ использовать неуправляемые драйверы!!
похоронен глубоко в документации оракула!!! СПАСИБО ОРАКУЛ!!!!!
Простое развертывание и независимость от разрядности - это действительно хорошие преимущества, но вы должны тщательно оценить типичное использование драйвера. При использовании нового управляемого драйвера в 64-битных процессах я столкнулся с почти 50% -ным недостатком производительности. Другие люди сообщают об утечке памяти и т. Д. На форуме Oracle: https://forums.oracle.com/community/developer/english/oracle_database/windows_and_.net/odp.net. Похоже, это своего рода типичный продукт с ошибками Oracle, на восстановление которого требуется еще несколько месяцев / лет: /
Имейте в виду, что пользовательские типы еще не поддерживаются. Это может быть причиной не переключаться на управляемый драйвер.
Посмотрите этот документ Oracle для различий между управляемой и неуправляемой версией:
http://docs.oracle.com/cd/E16655_01/win.121/e17732/intro004.htm