如何确定 SQL 服务器资源的大小(RAM、CPU 等)

ado*_*lot 4 hardware sql database-administration preferences sql-server

这是标准的故事,开发人员和管理员之间存在斗争。一种指责说数据库设计和查询很糟糕,而另一些则说这是缺乏硬件和数据量。
所以我问你是我的 IBM x3400,带有 2 个 xenons 2GHz 和 SCSI raid 5 和 4GB 的 RAM 适合 53 GB 的 MSSQL 数据库,表主要详细信息是大约 650 万条详细记录和 200 万条文档标题而其他的则在 100K 左右(例如物品)。

我们在从 SQL 获取数据时经常遇到性能不足的问题,该服务器仅专用于 SQL 服务器,并充当来自其他 SQL 服务器的复制数据的订阅者。

另一个问题是数据库管理员如何规划数据库服务器的硬件大小?是否有一些标准的方法,或者只是经验和感觉?

Tom*_*Tom 10

  • 现在 4 GB 内存是个笑话。所以,不 - 对不起。我认为你已经完成了。它可以工作,但这需要特定的使用模式。原则上我不会在 4 GB 的硬件上运行数据库服务器 - 16 GB 的 RAM 几乎没有任何成本。
  • SCSI RAID 5 不是最佳的。根据使用模式,您应该至少有两组 - 一组快速写入(日志),一组快速读取(数据)。我使用 4 个以上磁盘的 RAID 10 用于 OS 和 LOG 并使用另一个用于数据的磁盘取得了很好的成功。不过请注意,数据库要大得多。在您的情况下,考虑到您的数据只有 53 GB,丢弃 RAID 5 并仅放入两个镜像 SSD 是有意义的。两个 SSD 的镜像可能会将您的 IO 性能提高 100 倍。您可能会在 RAM 的帮助下进行 IO 绑定 - 按照今天的标准 - 可悲。对不起,如果这听起来很粗鲁,但是数据库服务器应该比开发人员工作站拥有更多的 RAM,并且取决于您所在的公司,您是在同等水平还是低于该水平。

是否有一些标准的方法,或者只是经验和感觉?

经验和感觉。您还可以向前思考并检查几年内什么是有意义的。例如,SuperMicro 拥有 NICE 服务器,在 SAS 配置中可以放置 24-72 个磁盘。因此,您可能会避免使用 SAN(更昂贵)并根据需要填充光盘。其他人得到一个小型服务器,然后用完选项。您还可以通过在普通工作站上进行测试来获得一些想法。

这是标准的故事,开发人员和管理员之间存在斗争。

不它不是。

一种指责说数据库设计和查询很糟糕,而另一些则说这是缺乏硬件和数据量。

没有了。数据库设计可以非常客观地衡量。如:有某些记录在案和已知的方法(很多开发人员基本上完全不知道)。听说过第五范式吗?

与查询相同。我实际上可以看到查询是否有效执行。这里没有真正的灰色地带。也就是说,可能会有权衡,但如果这变成了一场指责的游戏,那么我可以很确定肯定有问题。

通常,开发人员除了“这是一个简单的选择”之外什么都不知道,并且不知道如何处理数据库,然后尝试将硬件放在问题上。去过,看过。并非总是如此,但这可能是一种猜测。

  • 不过,根据大多数 IT 员工的小时费率,最好在这个问题上投入至少 16GB 的 RAM 和两个 SSD 以使其消失。如果是自己开发的应用程序,可能不值得重构代码。 (3认同)