AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 4430
Accepted
bernd_k
bernd_k
Asked: 2011-08-08 02:24:20 +0800 CST2011-08-08 02:24:20 +0800 CST 2011-08-08 02:24:20 +0800 CST

使用 DTA 还是评估 DMV?

  • 772

目前,我遇到了一个生产 SQL Server 数据库,其中有人添加了 DTA 中几乎所有缺失的索引建议。

表格如何确定索引是否需要或必要我了解到,有 DMV 视图,可用于延迟有关实际索引使用情况和缺失索引的信息。

Jason Strate的脚本仅使用来自该视图的当前信息,而当天的乐趣 - 自动自动索引!将这些视图中的一些信息保存到表中。

另一方面,DTA 需要计划何时运行分析器,选择要分析的内容,并在运行时对性能产生一些影响。

我的印象是,使用 DTA 作为第一步调优工具只是浪费时间,因为它的结果没有涵盖完整的数据库使用情况,新手很难理解,并且可能导致添加太多索引,对写入性能产生负面影响,而通过 DMV 收集数据几乎不需要准备,几乎涵盖了自上次重启以来数据库的全部使用情况。

我的问题集中在向管理层提出哪种战略。我想在第一步中专注于评估 DMV 视图,而完全忽略 DTA。

sql-server sql-server-2008
  • 3 3 个回答
  • 550 Views

3 个回答

  • Voted
  1. Brent Ozar
    2011-08-08T05:32:44+08:002011-08-08T05:32:44+08:00

    DTA 有助于添加索引但不会删除索引。如果您面对的数据库已经有超过 5 个索引,比如说,每个表,那么 DTA 不是答案。您需要使用 DMV 来评估现有索引的使用情况。

    这是我不久前做过的带有视频教程的脚本:

    http://www.toadworld.com/platforms/sql-server/w/wiki/10062.find-indexes-not-in-use.aspx

    • 4
  2. Best Answer
    Aaron Bertrand
    2011-08-08T05:32:54+08:002011-08-08T05:32:54+08:00

    我认为构建监控 DMV 并随时间跟踪其数据的东西(可能每晚拍摄索引使用情况和丢失的索引 DMV 的快照 - 包括过程统计数据也可能有意义)比运行一些工具更明智只要您想这样做,就可以短时间。您将在更长的时间内获得更好的画面,不仅是他们现在的样子,还有他们随着时间的推移如何变化。

    小心不要删除看似未使用但可能与某些在业务周期中仅被调用一次或两次的报告挂钩的索引 - 它可能比其频率所暗示的更重要。

    • 4
  3. gbn
    2011-08-08T07:09:14+08:002011-08-08T07:09:14+08:00

    据此(“它”是基于DMV的索引查询)

    • 它不像数据库引擎优化顾问那样智能。如果您确定了一个您知道的查询是昂贵的并且需要一些帮助,请不要仅仅因为缺少的索引 DMV 没有任何建议而放弃 DTA。DTA 可能仍然可以提供帮助。
    • 缺失的索引 DMV 没有考虑新索引可能产生的开销(额外的磁盘空间、对插入/删除性能的轻微影响等)。但是,DTA 确实考虑到了这一点。
    • 此查询输出中的“improvement_measure”列是创建索引后可能看到的(估计)改进的粗略指示。这是一个无量纲的数字,对其他指标只具有相对相同数字的意义。(它是 sys.dm_db_missing_index_group_stats 中 avg_total_user_cost、avg_user_impact、user_seeks 和 user_scans 列的组合。)
    • 缺失的索引 DMV 不建议建议的索引应该是聚集的还是非聚集的。这会在整个工作负载范围内产生影响,而这些 DMV 仅关注有利于单个查询的索引。(不过,DTA 可以做到这一点。)
    • 不建议分区。
    • DMV 可能不会为多列索引推荐理想的列顺序。
    • DMV 跟踪不超过 500 个缺失索引的信息。

    没有这方面的经验,也不知道任何替代参考,抱歉。

    我倾向于坚持使用 DMV,因为 DTA 你需要 db_owner。在产品上(作为开发人员 DBA,而不是生产 DBA)我没有运行这个的权限......

    • 2

相关问题

  • 死锁的主要原因是什么,可以预防吗?

  • 我在索引上放了多少“填充”?

  • 是否有开发人员遵循数据库更改的“最佳实践”类型流程?

  • 如何确定是否需要或需要索引

  • 从 SQL Server 2008 降级到 2005

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    您如何显示在 Oracle 数据库上执行的 SQL?

    • 2 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    我可以查看在 SQL Server 数据库上运行的历史查询吗?

    • 6 个回答
  • Marko Smith

    如何在 PostgreSQL 中使用 currval() 来获取最后插入的 id?

    • 10 个回答
  • Marko Smith

    如何在 Mac OS X 上运行 psql?

    • 11 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Marko Smith

    将数组参数传递给存储过程

    • 12 个回答
  • Martin Hope
    Manuel Leduc PostgreSQL 多列唯一约束和 NULL 值 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler 什么时候应该将主键声明为非聚集的? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - 哪个更好作为主键? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick 如何优化大型数据库的 mysqldump? 2011-01-04 13:13:48 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve