Максимальное количество баз данных в SQL Server 2008
Мы пишем программу на основе ASP.Net/C#, к которой потенциально может обратиться ряд компаний (каждая из которых имеет отдельный логин и данные). Мы думаем о наличии нескольких баз данных SQL Server 2008 (один и тот же экземпляр), каждый для одной компании. Тем не менее, программа С#, которая обращается к базе данных, будет одинаковой и создаст соответствующую строку соединения на основе базы данных, к которой будет обращаться клиент.
Сколько таких баз данных можно создать в одном экземпляре SQL-сервера, прежде чем увидеть ухудшение производительности из-за:
-
Ограничьте соединения, потому что каждое соединение (не уверенное в том, что оно будет объединено для доступа к различным базам данных) создается с использованием другой строки соединения.
-
Ограничение количества баз данных ограничено аппаратным или SQL-сервером. 2008 покажет ухудшение, когда число баз данных увеличится, чтобы сказать 100?
Что-нибудь еще, что я могу пропустить?
Спасибо за ваше время
Ответы
Ответ 1
- Максимальные базы данных для каждого экземпляра SQL Server: 32 767
- Максимальное подключение пользователя: 32 767
(Отсюда: Максимальная емкость для SQL Server)
Оба они практически ограничены объемом оперативной памяти, установленной машиной SQL-сервера, задолго до достижения этих максимальных значений.
Из двух я подозреваю, что пользовательские подключения станут более серьезной проблемой, если у вас тысячи пользователей (поскольку вы не используете пул соединений).
Чтобы найти текущее значение машины для сервера SQL Server:
SELECT @@MAX_CONNECTIONS AS 'Max Connections'
Обновлено в ответ на комментарии к плакату:
Это не действительно количество баз данных, являющихся проблемой, но большее количество часто используемых страниц в этих базах данных. Если все "горячие" страницы вписываются в память (и происходит очень мало физических чтений), все это хорошо.
Ответ 2
Вы также должны иметь в виду, что соединения будут объединены по строке подключения - в вашем случае вы получите отдельные пулы для каждой клиентской БД. Это может быть не плохо, если у вас есть высокий трафик для каждого клиента, но если у вас низкий трафик на множество разных баз данных, вы не получите полного преимущества объединения.
Ответ 3
Наличие нескольких баз данных для нескольких клиентов может легко стать кошмаром обслуживания. Если приложение одно и то же, я предполагаю, что дизайн БД будет таким же.
Мы выполнили аналогичный проект пару лет назад, но мы решили пойти на объединение данных в одной базе данных, а затем разработали надежную модель безопасности, чтобы убедиться, что один клиент не видит или не изменяет другие данные клиента.
Я с гордостью могу сказать, что проект был успешным, и сегодня, когда мы говорим, мы держим данные более 100 разных клиентов и безупречно выполняем.
Раджа