好的。我们知道数据库大小、并发用户数、每分钟交易数;应该选择处理器数量、RAID、RAM、镜像和集群。
没有确切的规则..但可能根本没有规则?
在我的实践中,在每种情况下我都有“遗留”系统,经过一些检查和访谈后,我可以形成关于如何改进硬件和设计的意见。
但每次我遇到“绝对”新系统(我猜没有新系统,但有时是这样的)时,我都无法说出任何可信的话。所以我很想知道人们如何处理这样的任务?他们根据自己的经验来规划任务还是有一些基本公式?
答案1
这可能更多地取决于事务的类型以及数据库的设计质量。同样相关的是读取和写入的比例(对于 RAID 配置非常重要),是否有复杂的 JOIN 等。这实际上与数据库和应用程序设计的质量有关,也与并发用户和事务的数量有关。因此,我认为通用 OLTP 数据库没有规则,您所能做的就是为你的OLTP 数据库和应用程序。想象一下,如果您没有索引,您的数据库性能将非常差。
从测试服务器开始,对其施加已知负载,使用 Profiler 查看瓶颈所在。然后修复这些问题,并增加负载。
答案2
如果您有特定的测试服务器,您可以进行一些测试,而无需安装 SQL 或部署任何数据库。
我听到一些好消息sqliosim.exe 工具用于在全新操作系统上模拟 SQL 活动,无需运行任何程序。我从未测试过它,因为我没有这样的环境,但它的配置并不难。
结果将指导您确定 CPU、内存或磁盘是否适合您的系统。
您需要一些基准来了解您需要多少 CPU、内存或磁盘。但是,OLTP 数据库的磁盘配置有一些最佳实践:RAID 10 和 RAID 5 似乎是最佳选择。
Raid 10 适合增加写入活动 - 日志文件(100%是写入活动)和数据文件(如果写入活动超过 I/O 操作的 10%)。
Raid 5 适合增加读取活动 - 如果写入活动少于 I/O 操作的 10%,则适合数据文件。
Paul Randal 的博客也可以帮助您,因为他做过许多硬件测试并得出了合理的结论:http://www.sqlskills.com/BLOGS/PAUL/category/Performance.aspx