10

我们正在编写一个基于 ASP.Net/C# 的程序,该程序可能会被许多公司访问(每个公司都有单独的登录名和数据)。我们正在考虑拥有多个 sql server 2008 数据库(同一实例),每个数据库用于一家公司。但是,访问数据库的 c# 程序将是相同的,并将根据客户将访问的数据库创建适当的连接字符串。

在看到任何性能下降之前,可以在 sql server 的单个实例中创建多少个这样的数据库,原因是:

  • 限制连接,因为每个连接(不确定它是否会被汇集以访问不同的数据库)是使用不同的连接字符串创建的。

  • 数据库数量的限制,是硬件限制还是sql server 2008在数据库数量增加到100个时会出现降级?

还有什么我可能会丢失的吗?

谢谢你的时间

4

3 回答 3

13
  • 每个 SQL Server 实例的最大数据库数:32,767
  • 最大用户连接数:32,767

(来自此处:SQL Server 的最大容量规格

两者实际上都受到 SQL 服务器机器的 RAM 量的限制,早在它达到这些最大值之前。

在这两者中,我怀疑如果您有成千上万的用户(因为您没有使用连接池),用户连接将成为更大的问题。

要查找 SQL Server 计算机的当前值:

SELECT @@MAX_CONNECTIONS AS 'Max Connections'

针对发帖人的评论进行了更新
: 问题实际上并不是数据库的数量,而是这些数据库中经常访问的页面的数量。如果所有“热”页面都适合内存(并且很少发生物理读取),那么一切都很好。

于 2009-06-28T01:52:19.610 回答
4

You should also keep in mind that connections will be pooled by connection string -- in your case, you will get separate pools for each Customer DB. That might not be bad if you have high traffic for each customer, but if you have low traffic to lots of different databases you will not get the full benefit of pooling.

于 2009-06-28T02:14:39.157 回答
2

为多个客户端拥有多个数据库很容易成为维护的噩梦。如果应用程序相同,我假设数据库设计也相同。

几年前我们做过一个类似的项目,但我们决定在同一个数据库中混合数据,然后开发了一个强大的安全模型,以确保一个客户最终不会看到或修改另一个客户的数据。

I can proudly say that the project was a success and today as we speak is holding data of 100+ different customers and is performing flawlessly.

Raj

于 2009-06-28T02:05:42.607 回答