SQL Server最大容量说明:  最大值(数量或大小)   对象 SQL Server 7.0 SQL Server 2000   批处理大小 65,536 * 网络数据包大小1 65,536 * 网络数据包大小1   每个短字符串列的字节数 8,000 8,000   每个 text、ntext、或 image 列的字节数 2 GB-2 2 GB-2   每个 GROUP BY、ORDER BY的字节数 8,060   每个索引中的字节数 900 9002   每个外键的字节数 900 900   每个主键的字节数 900 900   每行字节数 8,060 8,060   存储过程源文本中的字节数 批处理大小之较小者或者 250 MB 批处理大小之较小者或者 250 MB   每个数据表的聚集索引数 1 1   GROUP BY、ORDER BY 中的列数 只受字节数限制   GROUP BY WITH CUBE 或 WITH ROLLUP 语句中的列数或表达式数目 10   每个索引的列数 16 16   每个外键的列数 16 16   每个主键的列数 16 16   每个基础数据表的列数 1,024 1,024   每个SELECT 语句的列数 4,096 4,096   每个INSERT 语句的列数 1,024 1,024   每个客户端的连接个数 已配置连接的最大值 已配置连接的最大值   数据库大小 1,048,516 TB3 1,048,516 TB3   每个 SQL Server 实例的数据库个数 32,767 32,767   每个数据库的文件组个数 256 256   每个数据库的文件个数 32,767 32,767   文件大小(数据) 32 TB 32 TB   文件大小(日志) 4 TB 32 TB   每个数据表的外键表引用 253 253   标识符长度(以字符计) 128 128   每台计算机的实例数 暂缺 16   包含 SQL 语句的字符串长度(批处理大小) 65,536 * 网络数据包大小1 65,536 * 网络数据包大小1   每个连接的锁数 每个服务器的最大锁数 每个服务器的最大锁数   每个 SQL Server 实例的锁数 2,147,483,647(静态)   SQL Server 40% 的内存(动态) 2,147,483,647(静态)   SQL Server 40% 的内存(动态)   嵌套存储过程层数 32 32   嵌套子查询 32 32   嵌套触发器层数 32 32   每个数据表的非聚集索引个数 249 249   SQL Server 实例中同时打开的对象个数4 2,147,483,647(或可用内存) 2,147,483,647(或可用内存)   每个数据库中的对象个数 2,147,483,6474 2,147,483,6474   每个存储过程的参数个数 1,024 1,024   每个数据表的 REFERENCE 个数 253 253   每个数据表的行数 受可用存储资源限制 受可用存储资源限制   每个数据库的数据表个数 受数据库中的对象个数限制4 受数据库中的对象个数限制4   每个 SELECT 语句的数据表个数 256 256   每个数据表的触发器个数 受数据库中的对象个数限制4 受数据库中的对象个数限制4   每个数据表的 UNIQUE 索引个数或约束个数 249个非聚集索引和 1 个聚集索引 249个非聚集索引和 1 个聚集索引   1.网络数据包大小是表格格式数据方案 (TDS) 数据包的大小,该数据包用于应用程序和关系数据库引擎之间的通讯。默认的数据包大小为 4 KB,由 network packet size 配置选项控制。   2.在 SQL Server 2000 中,任何键的最大字节数不能超过 900。可以使用可变长度的列来定义键,只要在这种列中不插入数据超过 900 字节的行,其最大大小就可以在 900 以上。有关更多信息,请参见索引键的最大值。   3.当使用 SQL Server 2000 Desktop Engine 或 Microsoft 数据引擎 (MSDE) 1.0 时,数据库的大小不能超过 2 GB。   4.数据库对象包括所有的表、视图、存储过程、扩展存储过程、触发器、规则、默认值及约束。一个数据库中所有对象的总数不得超过 2,147,483,647

解决方案 »

  1.   

    SQL SERVER 2005 每个实例支持的数据库数为 32767 个,从性能上讲,只要系统足够强劲,应该没有问题.当然恐怕很少有实例会扩展到那么多的数据库,因此,实际性能如何有待考证.
      

  2.   

    SQL SERVER 2005 每个实例支持的数据库数为 32767 个,只要空間足夠,硬件超好,估計你不會超出極限~~
      

  3.   

    xiexie  , 这里的人确实比较热心
    非常感谢,我是做数据托管,因为考虑一个租户,一个独立的数据库,所以数据库比较多,就不知道这个方案对性能影响 多大。如果全部租户一个独立的数据存储,太大了。可能要上T,非常影响性能
      

  4.   


    大乌龟可能有,你可以直接问他。
    http://hi.csdn.net/dawugui
      

  5.   

    如果硬件性能足够,没什么问题我们曾经部署过一台较老的服务器,如果数据库的负载过大的话,造成CPU使用率过高
    当您怀疑计算机硬件是影响SQL Server运行性能的主要原因时,可以通过SQL Server Performance Monitor监视相应硬件的负载,以证实您的猜测并找出系统瓶颈。下文将介绍一些常用的分析对象及其参数。
      
      Memory: Page Faults / sec
      
      如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。
      
      Process: Working Set  
      SQL Server的该参数应该非常接近分配给SQL Server的内存值。在SQL Server设定中,如果将"set working set size"置为0, 则Windows NT会决定SQL Server的工作集的大小。如果将"set working set size"置为1,则强制工作集大小为SQLServer的分配内存大小。一般情况下,最好不要改变"set working set size"的缺省值。
      
      Process:%Processor Time
      
      如果该参数值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。
      
      Processor:%Privileged Time
      
      如果该参数值和"Physical Disk"参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。另外设置Tempdb in RAM,减低"max async IO","max lazy writer IO"等措施都会降低该值。
      
      Processor:%User Time
      
      表示耗费CPU的数据库操作,如排序,执行aggregate functions等。如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值。
      
      Physical Disk:Avg.Disk Queue Length
      
      该值应不超过磁盘数的1.5~2倍。要提高性能,可增加磁盘。
      
      注意:一个Raid Disk实际有多个磁盘。
      
      SQLServer:Cache Hit Ratio
      
      该值越高越好。如果持续低于80%,应考虑增加内存。 注意该参数值是从SQL Server启动后,就一直累加记数,所以运行经过一段时间后,该值将不能反映系统当前值
      

  6.   

    这样说,一个1T的大数据库操作对sql server 性能影响高?还是把这个1T的数据库分成1000个1G 的小数据库性能影响高? 同时并发操作连接过多的数据库是不是需要耗费更多的内存和CPU?
      

  7.   

    还有种方法是用schema,网上能找到的讨论都是针对oracle的。跟MSSQL有些差别,但是可以作为一种新的思路。
    instance和schema的差别和优劣你自己看books online吧,我就不抄书了有的结果记得跟大伙分享 ^^
      

  8.   

    这样说,一个1T的大数据库操作对sql server 性能影响高?还是把这个1T的数据库分成1000个1G 的小数据库性能影响高? 同时并发操作连接过多的数据库是不是需要耗费更多的内存和CPU?
    --我觉得实例多对性能是有影响的.因为不管怎么样,都是在一个服务器上运行,资源都在互争的..期待更专业的回答
      

  9.   

    感觉1个1T大的数据比1000个1G大的性能要高,如果分成1000个1G的数据库的话,虽然它小,但是五脏具全,对于系统资源的并发性影响比较大.个人看法,期待更高手指正.
      

  10.   

    如果数据库太大,物理体积太大,也就是表很大呢,备份和恢复都是很麻烦,而且大表里查询数据和插入数据效率一定不如小表。 表的schema方式sql server 2005 也支持 CREATE SCHEMA ContosoSchema AUTHORIZATION Contoso  接下来,系统可以使用SchemaName.TableName来访问该客户的模式:  CREATE TABLE ContosoSchema.Resumes (EmployeeID int identity primary key, Resume nvarchar(MAX))  一旦模式创建完毕,它将成为该客户所属用户帐号访问的的默认模式  ALTER USER Contoso WITH DEFAULT_SCHEMA = ContosoSchema  一旦默认模式设置完毕,在使用该客户的用户帐号进行SQL语句操作时就不要再使用SchemaName.TableName 来指定特定的数据表,而是只需要指明表名即可。因此在系统代码内一句简单的SQL语句就可以应用于所有客户,而且每个客户仅访问到自己的模式内的数据:  SELECT * FROM Resumes
      

  11.   

    我猜你说的是sql server express的用户实例吧.
    如果像你说的那样,有成百上千个数据库每个数据库一个实例.不知道结果会怎么样.