Производительность пула фрагментированных соединений SQL Server в мультитенантных приложениях

Я ищу реализацию для мультитенантности в SQL Server. Я рассматриваю общую базу данных, общую схему и фильтр представления клиента, описанные здесь. Единственный недостаток - это фрагментированный пул соединений ...

Согласно http://msdn.microsoft.com/en-au/architecture/aa479086 , фильтр представления клиента описывается следующим образом:

«Представления SQL могут использоваться для предоставления отдельным арендаторам доступа к некоторым строкам в данной таблице, предотвращая при этом доступ к другим строкам.

В SQL представление - это виртуальная таблица, определяемая результатами запроса SELECT. Полученное представление затем можно запросить и использовать в хранимых процедурах, как если бы это была фактическая таблица базы данных. Например, следующий оператор SQL создает представление таблицы с именем «Сотрудники», которая была отфильтрована так, что только строки, принадлежащие одному tenant видны:

CREATE VIEW TenantEmployees AS 
SELECT * FROM Employees WHERE TenantID = SUSER_SID()

Этот оператор получает идентификатор безопасности (SID) учетной записи пользователя, имеющей доступ к базе данных (которая, как вы помните, является учетной записью, принадлежащей арендатору, а не конечному пользователю), и использует его для определения того, какой строки должны быть включены в представление "

Если у нас есть одна база данных, хранящая s ау 5000 различных клиентов, тогда пул соединений полностью фрагментирован и каждый раз, когда запрос отправляется в базу данных ADO.NET необходимо установить новое соединение и пройти аутентификацию (помните, что пул соединений работает для каждой уникальной строки соединения), и этот подход означает, что у вас есть 5000 строк соединения…

Насколько я должен беспокоиться об этом? Может ли кто-нибудь дать мне несколько реальных примеров того, насколько существенно влияние пула соединений на загруженный сервер многопользовательской базы данных (скажем, обслуживание 100 запросов в секунду)? Могу я просто добавить больше оборудования для решения проблемы, и она исчезнет?

Мысли ??

7
задан Alexander 1 January 2013 в 20:58
поделиться