大型 SQL Server 建议

e-o*_*-on 6 performance sql-server-2005 sql-server

我正在处理一个相当大的 SQL Server 数据库并遇到一些问题。

数据库很新,我一直在将数据导入表中,这使整个服务器运行得很慢。数据库现在是 15GB,例如在 1 个表中它只有 4 列,但有 1.22 亿行,占用了 3.5GB。另一个表大约有 35 列,300 万行,占用大约 1.5GB。

每当我打开一张大表,或开始在我的 MVC3 应用程序中使用它时,它几乎使服务器瘫痪;内存使用量达到最大值,它开始运行非常缓慢。(服务器规格:奔腾双核 E6300 2.8GHz,2GB RAM,Windows 2008,SQL Server 2005,一张磁盘)。

这确实是我第一次处理如此大量的数据,因此一直在添加索引以尝试加快速度,但是一旦内存达到最大水平,我必须重新启动服务器才能使其正常工作正常的速度。

无论如何,我不觉得 15GB 有那么大——2GB RAM 肯定可以处理吗?我什至还没有完成第一轮数据的添加,所以它会变得更大。

有没有人对如何更好地设置和提高效率有任何建议。所有 PK's 和 FK's 都已经设置好,我已经在大表中添加了索引,看看这是否有帮助,但它最终又开始慢慢变慢了。顺便说一句,在数据库属性中,它显示“可用空间 - 1596.96MB”你如何增加这个数字?

Mar*_*ith 9

2GB 的 RAM 几乎无法运行 Windows,更不用说 SQL Server 了。

显然,您的 15GB 数据不适合 2GB 的 RAM。因此,您运行的任何需要不在 RAM 中的行的查询都需要从磁盘读取。

从那里,您可以计算请求的数据量与磁盘传输数据的速度。考虑到服务器的内存严重不足,可以假设您只有一个微调器以极慢的速度提供 IOPS,顺序读取可能为 50MB/秒,但低至 1MB/秒,其中有几个查询在争夺它们分享。

让 5 个用户每人运行一个查询,该查询需要 1GB 当前不在 RAM 中的数据,并且您将等待 15 分钟以上,以便数据通过系统进行处理。

RAM 便宜得可笑,尤其是与您浪费时间尝试将 15GB 优化为 2GB 的成本相比。填满服务器,或者买一个新的。

另外:Pentium E6300 似乎是台式机级处理器。您想要一台设计为服务器的计算机。仅添加几个磁盘和更多 RAM 可能并不令人满意。