首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库调优建议

数据库调优建议
EN

Stack Overflow用户
提问于 2010-07-12 15:57:00
回答 2查看 152关注 0票数 1

可能你们中的一些人甚至不知道这些功能,所以你们会从这篇文章中学到很多东西,这实际上会帮助我更好地优化,你们中的一些人可能每天都会使用它们,这样你们就可以帮助我和其他DBA验证较少的用户。

我使用的是SQL-Server 2005 Standard

我经常运行SQL Server Profiler。每次我发现特殊查询或sps的执行时间超过了我的可能限制,即复杂查询的执行时间低于100ms,短查询的执行时间超过30ms (数字并不意味着什么,只是为了更有意义)。在我发现可能有问题的查询后,我会将它们写下来,这样我就可以使用Database Engine Tuning Advisor,它会对表执行过载的查询,并在结果中给出我需要构建的索引,以便提高性能。每天晚上,我都会根据维护计划执行索引重建功能。

现在提问时间到了!

1.如果数据库引擎优化顾问给我10个要创建的索引,而改进百分比约为40%,我是否应该使用它的建议?更好的问题是,我应该遵循的索引数量/改进百分比的比率是多少。重新构建索引需要占用空间和时间。

2.如果我为每个有问题的查询创建大约5-7个索引,那么每个DB最终可能有500个索引。我可以建立多少个索引才能使DB正常运行?有什么限制吗?

3.除了使用我的方法或亲力亲为,还有其他方法可以优化(或重新设计)您的DB吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-13 21:31:01

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

对于读取率很高的工作负载(例如数据仓库),创建一个索引可能是有意义的,而为具有更多写操作的环境创建索引可能会适得其反。

DTA可以通过评估对总体工作负载的影响来帮助解决这一问题,但您需要尝试捕获一个有代表性的样本(不仅仅是性能较差的查询)。SQL Profiler非常占用资源,因此要在对服务器影响最小的情况下执行此操作,您需要使用带有适当过滤器的服务器端SQL跟踪,以便仅记录与感兴趣的数据库相关的事件。

要单独识别性能最差的查询,如果您至少安装了SQL2005 SP1客户端工具,您应该能够右键单击Management Studio中的数据库节点,并使用Reports -> Standard Reports菜单来查看缓存中具有最高CPU/IO的计划。

如果你对这个领域感兴趣,我推荐SQL Server 2008 Query Performance Tuning Distilled这本书(其中大部分也适用于SQL2005 )

票数 1
EN

Stack Overflow用户

发布于 2010-07-13 21:07:56

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

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

这比孤立地逐个查看查询要好,尽管这仍然有它的位置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3226708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档