2012-07-22 50 views
0

我曾经与几个服务器提供商谈过,他们现在试图估算Web开发项目的成本可行性,但并没有真正得到明确的答案。如何估计SQL Server数据库的服务器大小要求?

该项目的主要负担是数据库,它将容纳2000万行数据,每行5列(10个字母代码,10个字母代码,10个字母代码,10位整数,URL(例如20个字符长平均)。

的主要问题是如何估计GB必要的存储的类似的东西?(与SQL Server)。我没有SQL Server的复制测试。

的第二个问题实际上是关于速度和I/O需求,但这可能是在演示开发之后的一个问题。

回答

1

假设你的10个字母代码和20个字母的URL存储为nchar,你的10位整数存储为int,它看起来像你看每行124个字节的每个this表:每个nchar(10)20个,每个4个int,每个nchar 40(20)。这意味着,在2000万行,你只是超过2.3 GB。

+0

我会通过承认我不是SQL专家(我刚刚在数据类型上搜索表,查找像nchar/nvarchar之类的文本类型之间的差异,然后做了一些数学),所以有可能我错过了一些东西。 – Tyson 2012-07-22 23:34:29

+0

感谢您的支持,您是否知道用户负载以及基于每个用户的数据库查询数量来估计服务器性能需求的方法? (在RAM /插座等方面?) – user1166981 2012-07-22 23:35:17

+0

不,不确定缺少做一些原型。 – Tyson 2012-07-22 23:37:50

4

有关于此主题的完整MSDN章节:Estimating the Size of a Database。知道你需要多少个非聚集索引(你是否想要在这些'代码'列中查找数据?')以及什么是聚簇索引键是非常重要的。每个主题都有,再次,一个话题在MSDN:

此外,您可以部署Row CompressionPage Compression来减少你的表(S)的大小。如果你选择Unicode columsn,你也可以启用Unicode Compression

您的性能要求将主要由您的负载(即您的查询)驱动。您没有指定如何查询数据库(范围?聚合,单例查找?,BI?)以及数据库如何更新(只读?,ETL ?, OLTP?)。有关于如何Monitor and Tune for Performance tipc,但更重要的是设计你的应用程序的性能。有很多细节,例如。阅读How Data Access Code Affects Database Performance,但是,大部分情况下,最重要的任务是将您的数据模型(表和索引的布局)调整为您的访问模式(您将如何查询数据库)。

+0

嗨Remus,谢谢你非常有帮助的回答,我会认真阅读。我还没有充分了解数据库,但它似乎!我提到的第二个担心是查询的负载,同时可能会有数千个查询发生。我打算使用这个网格:http://demos.telerik.com/aspnet-ajax/grid/examples/programming/filteringtemplatecolumns/defaultcs.aspx这是我的理解,过滤使用分页方法的查询。 – user1166981 2012-07-23 12:00:35

+0

每个演示300,000行的基准:http://demos.telerik.com/aspnet-ajax/grid/examples/performance/linq/defaultcs.aspx稍微超过一秒钟搜索一列中的数据。如果知道服务器的规格,您是否知道是否可以根据这些统计数据估计在某些同时进行的搜索时可以获得的响应时间有多大? – user1166981 2012-07-23 12:06:08