我有一个只读数据库(产品),它在自己的Sql Server 2008上进行记录。优化查询以减少I/O压力是否有意义?
我已经通过查看活动监视器中最昂贵的查询来优化查询 - 报告。我按CPU的成本订购了这份报告。我现在有50个查询/秒,没有查询超过300毫秒。
CPU时间正常(30%)和内存仅被使用20%(64GB中)。
有一个问题:磁盘时间稳定在100%(我查看了空闲时间性能计数器并使用ideras SQL诊断管理器)。我可以看到产品数据库的行为与我在另一台机器上的订单数据库不同,并且具有较小的表:如果我查看一个事件探查器跟踪,我在product-db中查询显示列“read”中的值高于50.000 。在我的订单DB中,这些值永远不会高于1000.在product-db中的查询使用大量的公用表表达式,在大型表上工作(有些大约有500万条)。
如果我应该投入时间优化I/O性能查询或者我应该只添加一台服务器,我并不确定。通过otimizing查询持续时间,我已经添加了缺少的索引。是为I/O优化通常做的事情?
这可能是服务器故障的一个更好的问题。你只有一张光盘有事务日志,用户数据库文件和tempdb?如果不是哪一个(S)有长的磁盘队列长度? – 2010-10-20 20:13:07
@Martin Smith他的数据库是只读的,所以我不希望事务日志中的重要负载。 – 2010-10-20 20:17:44
@Peter - 的确如此。我有点不确定'order db'进入它的位置。 @Malcolm - 这是完全独立的硬件吗? – 2010-10-20 20:21:58