![SQL Server 2008 R2 / 每秒 500 次查询](https://linux22.com/image/574029/SQL%20Server%202008%20R2%20%2F%20%E6%AF%8F%E7%A7%92%20500%20%E6%AC%A1%E6%9F%A5%E8%AF%A2.png)
我正在运行一个需要大量查询数据库的应用程序,每秒大约有 500 个查询(插入/更新/选择)。我想购买一台专用服务器来运行该应用程序,主要有 3 个表(共 20 个)接收大多数查询(大约 99%)。
我并不是一个真正的硬件专家,所以我想知道我是否可以与您分享我感兴趣的服务器,并且您会告诉我它是否足够,如果可以的话,当然,根据您的估计。
进入/出数据库的信息必须是整数/小数。
其中一个表应包含大约 50,000 条记录,另一个表应包含大约 500,000 条记录,而最大的表应包含超过一百万条记录。
我知道这些数字并没有那么大,但我真的不知道会发生什么,我现在在一台较小的服务器上运行我的应用程序,由于所有的交易,它的 CPU 使用率很高。所以我的新服务器是:
- 服务器:Dell PowerEdge R710
- CPU:2 个英特尔四核 E5504
- 硬盘:2x500GB SATA2
- 内存:16GB DDR3
- 软件:Microsoft SQL Server 2008 Web Edition(2 个处理器)
- 操作系统:Windows Server 2008 R2 Web(2 个 CPU)
您认为这足够吗?
答案1
每秒 500 次操作可能很多,也可能微不足道。这实际上取决于数据的复杂性和数据处理的复杂性。
从性能角度来看,百万行表上的查询是否能够有意义地使用索引或是否将进行全表扫描,这两者之间存在巨大差异。就像表是否适合内存或必须从磁盘读取一样。就像您定期使用 INSERT 语句创建索引拆分一样。就像...
我可以继续这样说几行,但长话短说:建立一个测试系统,输入数据,用实际负载进行基准测试,调整,重新基准测试,并根据您的个人舒适度通过推断和过度工程来估计所需的扩大规模。
答案2
如果我的数据库可以装入内存,我会购买内存。我相信 SQL Server 在运行 64 位版本时可以很好地管理其缓存。
除了拥有足够的内存外,我建议不要使用两个驱动器。考虑一下当 SQL 将日志文件强化到磁盘驱动器时的操作。如果磁盘驱动器正忙于操作系统操作,SQL 将不得不等待。
考虑购买两个驱动器作为操作系统的镜像,并至少为 morror 购买 2X 驱动器或为 SQL 购买 raid 10。