2010-02-14 3 views
3

Hay, Моей системе необходимо выполнить несколько основных SQL-запросов (в Oracle DB) с использованием того же соединения (асинхронное).Работа с ODP.NET асинхронно

Какова наилучшая практика для этой проблемы? 1. открытого одно соединения и выполнить каждый оператор SQL на другом потоке (это поточно?) 2. создать новое соединение и «открытый + близко» это для каждого SQL заявления

Спасибо, HEC

ответ

4

Мы называем операторы Oracle SQL несколькими потоками, и это, вероятно, лучше всего, если ваша БД может справиться с нагрузкой и в любом случае не станет узким местом. ОДНАКО, я думаю, вам нужно создать соединение в потоке, который будет выдавать команду SQL. Вы можете (и, вероятно, должны) также использовать пул соединений, чтобы ваши соединения были повторно использованы, а не были восстановлены (и Oracle, похоже, в порядке с повторным использованием этих потоков из одного потока в другой).

+0

Что вы подразумеваете под «Connection Pooling»? ODP.NET имеет встроенный пул соединений (который мне нужно только настроить в моей строке подключения). правильно? –

+1

Да, это пул соединений, о котором я говорил. Для меня было немного неожиданно (для меня), что ODP.NET заставил меня открыть каждое соединение в потоке, который будет использовать его, но сам будет повторно использовать соединения (в своем собственном пуле соединений) по потокам. Но я полагаю, что это принудительно, чтобы обеспечить безопасность потока клиентского кода. –

+0

, кстати, в настоящее время я использую только одно соединение и передаю его ко всем потокам, и он отлично работает ... в любом случае - я думаю, что лучше открыть соединение и «закрыть» его послесловие на каждый поток. Спасибо за ответ! –