我们正在编写一个基于ASP.Net/C#的程序,可能会被许多公司访问(每个公司都有单独的登录和数据) . 我们正在考虑为一个公司提供多个sql server 2008数据库(相同的实例) . 但是,访问数据库的c#程序将是相同的,并将根据客户将访问的数据库创建适当的连接字符串 .
在看到由于以下原因导致性能下降之前,可以在sql server的单个实例中创建多少个此类数据库:
-
限制连接,因为每个连接(不确定它是否将用于访问不同的数据库)是使用不同的连接字符串创建的 .
-
限制数据库的数量,是否受到硬件或sql server 2008的限制,当数据库数量增加到100时会显示降级?
还有什么我可能会失踪的?
谢谢你的时间
3 回答
每个SQL Server实例的最大数据库数: 32,767
最大用户连接数: 32,767
(从这里:Maximum Capacity Specifications for SQL Server)
两者实际上都受到SQL服务器机器具有的RAM量的限制,早在达到这些最大值之前 .
在这两者中,如果你有数千名用户(因为你没有使用连接池),我怀疑用户连接会成为更大的问题 .
要查找SQL Server计算机的当前值:
Updated 回应海报的评论:
它's not really the number of databases that is the problem, but more the number of frequently accessed pages in those databases. If all the '热'页面适合内存(并且很少发生物理读取)然后一切都很好 .
您还应该记住连接将通过连接字符串进行池化 - 在您的情况下,您将为每个客户数据库获得单独的池 . 如果您为每个客户提供高流量,那可能并不坏,但如果您拥有很多不同数据库的流量,则无法获得池化的全部好处 .
为多个客户端提供多个数据库很容易成为维护的噩梦 . 如果应用程序是相同的,我假设数据库设计也是一样的 .
几年前我们做了类似的项目,但我们决定在同一个数据库中混合数据,然后开发一个强大的安全模型,以确保一个客户不会最终看到或修改另一个客户的数据 .
我可以自豪地说,该项目是成功的,今天我们所说的是持有100个不同客户的数据并且表现完美无瑕 .
拉吉