Модераторы: gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сколько коннектов использовать 
:(
    Опции темы
adLucem
Дата 27.4.2007, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 17.4.2007
Где: Украина, Донецк

Репутация: нет
Всего: 5



Вопрос можно разделить на два:
1. Сколько объектов соединений нужно использовать в процессе?
1. Определяется использованием многопоточных транзакций. В рамках каждого потока следует изолировать объекты соединений. Следовательно, если в программе параллельно может работать несколько потоков, каждый из которых связывается с базой данных, то каждый из потоков должен использовать только собственные объекты соединений.

2. Сколько соединений следует держать открытыми в каждом потоке?
Определяется архитектурой приложения, которая касается обработки транзакций, то есть количество соединений на поток должно минимальным, но не меньше чем необходимо с технической точки зрения.
Например, если архитектура базируется не на отсоединенных таблицах данных а на обработке множества записей (с использованием DbDataReader), то несколько соединений может понадобиться при параллельном доступе нескольких классов, каждый из которых осуществляет получение данных с использованием множества записей (так как на одном открытом соединении в каждый момент времени может быть открыто только одно множество записей).

Итого.
Количество соединений определяется с одной стороны, количеством параллельных транзакций, а с другой стороны, количеством соединений, необходимых для выполнения каждой транзакции.
Соединения следует либо закрывать после окончания работы с ними, либо использовать класс оболочку, который является высокоуровневым пулом соединений и гарантирует правильность работы с ними (в частности отслеживает состояние соединений).

Область использования приложений с одним, постоянно открытым соединением вообще мне не ясна.
PM MAIL ICQ   Вверх
emmanuil
Дата 2.5.2007, 05:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: 1
Всего: 3



Может оно и так, но скорее всего в пуле находятся сведения авторизации и прочее. А вот при создании нового соединения @@spid каждый раз разный, а весь смысл в том чтобы @@spid был одинаковый. @@spid у каждого коннекта разный, это сделано для того чтобы не было конфликтов между пользователями. Допустим при создании локальной временной таблицы в базе, ее не видит другой пользователь, у которого другой @@spid. @@spid - это проще говоря сеанс, пространство, которое отводится для соединения!
А пул на это никак ни влияет! Так и не нашел однозначного ответа! И в одном способе есть плюсы и минусы и в другом! А как наиболее эффективно сделать, ответа не получил. Наверное все зависит от конкретной задачи! Ну что ж, всем спасибо! Если еще есть мнения, буду рад!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0557 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.