繁体   English   中英

扩展MS SQL Server 2008数据库

[英]Scaling a MS SQL Server 2008 database

我试图找出最好的方式扩展我的网站,我有一个问题,如何mssql将扩展。

该表目前的方式是:

cache_id - int - 标识符
cache_name - nvchar 256 - 用于与event_id一起查找
cache_event_id - int - 基本上是一种分组方式
cache_creation_date - datetime
cache_data - varbinary(MAX) - 数据大小为2k到5k

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

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

数据将从这张表中用来显示网页,所以任何超过200毫秒的记录在我看来都是不好的(我知道有些人认为1-2秒的页面加载是可以的,但我认为这很慢并且想要做我最好保持低调)。

所以归结为,什么减慢了SQL服务器的速度?
它是表的大小(磁盘空间)
是行数
它在什么时候停止使用多个数据库服务器变得经济有效?


如果它几乎不可能预测这些事情,我会接受作为回复。 我不是DBA,我基本上试图设计我的数据库,所以我不必在以后它包含大量数据时重新设计它。

So it boils down to, what is it that slows down the SQL server?
Is it the size of the table ( disk space )
Is the the number of rows
At what point does it stop becoming cost effective to use multiple 
       database servers?

这完全是“经验法则”观点; DB的负载(因此在很大程度上是性能)主要是2个问题数据量和事务负载的因素,而恕我直言,第二个通常更相关。

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

事务负载主要是代码设计和用户总数的一个因素。 代码设计包括正确地获取事务大小等因素(小而快是一般目标,但是像大多数事情一样,它可以把它带到远处,并且事务太小而不能保持完整性或者本身很小以至于增加负载) 。

缩放时我建议先扩展(更大,更快的服务器)然后输出(多个服务器)。 多服务器实例的管理问题很重要,我建议只考虑具有操作系统,网络和DBA技能和流程的网站。

规范化和索引。

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

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

唯一可能的答案是设置它,并准备好长时间迭代学习的东西,只有你知道,因为只有你将生活在你的领域。 在您有一些实际经验分享之前,您在此处看到的任何技术建议都将是天真且未充分了解的。

测试每一个猜测,比较结果,看看哪些有效。 并继续寻找更多可测试的想法。 (并且不要害怕退出最终没有帮助的变化。这是持续简单化的基本要求。)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM