Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 OLEDB CSession - вопрос  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Есть функция, которую много раз вызывают в приложении, которая вызывает расширенную хранимую процедуру.

Что лучше: один раз открыть CSession и вызывать РХП в одной сессии, или же каждый раз открывать сессию, выполнять вызов процедуры и закрывать сессию?

РХП не возвращает никакие рекордсеты.

Клиентское приложение может вызывать эту функцию сотни тысяч раз.Такова специфика.
23 сен 04, 18:26    [983575]     Ответить | Цитировать Сообщить модератору
 Re: OLEDB CSession - вопрос  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Делаем простенький тестик
CHECK_ERROR(CoInitialize(NULL));

CDataSource ds;
CHECK_ERROR(ds.OpenFromInitializationString(L"your_con_string"));
CSession ss1, ss2, ss3;
CHECK_ERROR(ss1.Open(ds));
CHECK_ERROR(ss2.Open(ds));
CHECK_ERROR(ss3.Open(ds));

ss1.Close();
ss2.Close();
ss3.Close();
ds.Close();

CoUninitialize();

Длительное время занимает получение коннекта - ds.OpenFromInitializationString. Открытие-закрытие сессий по времени неощутимо. Таким образом, открытие CDataSource лучше бы иметь одно на весь запуск, а сессии можно порождать-убивать по необходимости, это не внесет тормозов.

Также стоит почитать про пулинг коннектов. Тема из той же оперы.
24 сен 04, 11:04    [984580]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить