2009-04-19 151 views
3

我试图找出扩展我的网站的最佳方式,并且我对如何扩展mssql有疑问。扩展MS SQL Server 2008数据库

的方式表目前是:

的cache_id - INT - 标识符
cache_name - nvchar 256 - 用于查找与事项标识
cache_event_id沿 - INT - Basicly一个分组
cache_creation_date的方式 - 日期时间
cache_data - VARBINARY(MAX) - 数据大小将是从2K到5K

存储的数据是一个字节数组,基本上是我网站上页面的一个缓存实例(压缩的)。

我看到存储的不同方式是:
1)1个大表,它将包含数千万条记录,容易变成几千兆字节大小。
2)包含上述数据的多个表,这意味着每个表将会有200万到100万条记录。

的数据将会从该表可以用于显示网页,所以任何200ms以上,以获取记录是坏在我的眼睛(我知道一些脂肪酶认为1-2秒页面加载是好的,但我认为这很慢,并想尽我所能保持较低水平)。

因此,归结起来,什么是减慢SQL服务器?
是表的大小(磁盘空间)
是行数
在什么时候停止使用多个数据库服务器的成本效益?


如果它几乎不可能预测这些事情,我接受,作为回复。我不是数据库管理员,而我基本上正在设计我的数据库,所以我不需要在它包含大量数据时重新设计它。

回答

3
​​

这是所有'经验法则'视图; 数据库的负载(因此在相当程度上的性能)主要是数据量和事务负载两个因素的问题,与恕我直言第二个通常更相关。

关于数据量,可以容纳数千兆字节的数据,并通过标准化,索引,分区,快速IO系统,适当缓冲区高速缓存大小等方式获得可接受的访问时间。规范化是在DB设计时考虑的问题,在系统调整期间的其他问题,例如更多/更少的索引,缓冲区缓存大小。

事务负载主要是代码设计和用户总数的一个因素。代码设计包括像获取事务大小这样的因素(小而快是一般目标,但是像大多数情况下可能将事务大小拿到很远并且事务太小而不能保持完整性或小到本身增加负载) 。

当缩放时,我建议先放大(更大,更快的服务器),然后出(多个服务器)。一个多服务器实例的管理问题是重要的,我建议只有值得考虑与OS,网络和DBA的技能和流程匹配的网站。

1

标准化和索引。

如何,我们不能告诉你,因为你还没有告诉使用你的表正在试图建模或如何使用它。

100万行并不罕见。再次,我们不能在没有上下文的情况下告诉你,只有你可以,但不要提供。

+0

是的,我忘了说数据正在被拿出来用来显示一个网页。我编辑了原来的问题,使其更清楚 – EKS 2009-04-19 23:25:02

1

唯一可能的答案是设置它,并准备一个长时间的迭代学习过程,只有你会知道,因为只有你会活在你的域中。您在这里看到的任何技术建议都会很幼稚,并且没有足够的信息,直到您有一些实际的经验分享。

测试每一个你的猜测,比较结果,看看有什么作用。并继续寻找更多可测试的想法。 (并且不要害怕退出不起作用的变化,这对于持续简单性有任何希望是一个基本要求。)

并且接受数据库设计将发展的事实。这并不像你的评论所暗示的那样可怕。更改数据库比绕过它的软件容易得多。