2010-07-12 60 views
1

可能有些你甚至不知道这些功能,因此,您将学习从这个帖子很多,这将在事实上帮助我更好地优化和一些你可能会使用他们每天的基础上,所以你可以帮助我和其他少数DBA证明用户。数据库调整通知:

我使用的是SQL-Server 2005标准

我跑SQL Server Profile R A很多。每次我发现即席查询或sps哪个执行时间超过了我对复杂查询不到100毫秒的限制,对于短的超过30毫秒(数字并不意味着什么,仅仅是为了某种意义)。在发现可能有问题的查询后,我将它们写下来,以便我可以使用Database Engine Tuning Advisor,它在表上执行重载查询,并在结果中给出我需要构建的索引以提高性能。我每天晚上都从维护计划执行索引重建功能。

现在问题时间!!!

1.如果数据库引擎优化顾问给我10个索引创建,同时提高比例约为40%,我应该使用它的意见没有?更好的问题是我应该遵循的指标比例/改进比例是多少。索引需要空间和时间进行重建。

2.如果我为每个有问题的查询约5-7指标,我可以每DB 500个指数结束了。我可以建立多少个索引,DB会正常执行?有什么限制吗?

3.Is有任何其他方式优化(也重新设计)比使用我的方法或你的手和眼睛的SP将会SP等你的数据库?

回答

1

这个问题没有正确的答案,因为它很大程度上取决于你的工作量。

对于具有读出的重比率(例如数据仓库)它可能是有意义的创建,它是正适得其反创建用于写入的更大量的环境的指标的工作负载。

的DTA可以用这方面提供帮助通过评估的总工作量的影响,但你需要尝试和捕捉具有代表性的样本(不只是表现较差的查询)。 SQL事件探查器相当耗费资源,因此要尽可能减少对服务器的影响,您需要使用具有适当过滤器的服务器端SQL跟踪来记录与感兴趣的数据库相关的事件。

识别隔离性能最差的查询如果您至少安装了SQL2005 SP1客户端工具,您应该能够在Management Studio中右键单击数据库节点,并使用报告 - >标准报告菜单查看拥有最高CPU/IO的缓存。

如果你有兴趣在这方面我推荐这本书SQL Server 2008 Query Performance Tuning Distilled(大部分是适用于SQL2005和)

+0

报告似乎可能是由于恢复模式设置为简单的禁用...谢谢你的书,我喜欢SQL,因为我必须在我的工作场所覆盖所有角色。 – eugeneK 2010-07-13 13:41:24

1

您可以让SQL事件探查器登录到一个表,因此它会将查询写入到您指定的表中。如果可以的话,让它运行几个小时 - 或者尽可能多地覆盖尽可能多的查询/事件。

接下来,使用数据库引擎优化顾问 - 并让它使用这个查询表作为它的源输入。你会发现它看起来整个模式,并会建议你创建一些索引,并删除其他人。

这比单独查看查询要好,尽管这仍然有它的位置。