Data Engine Tuning Advisor 是SqlServer自带的数据库性能调优工具之一,我们一起来学习一下怎么用这个工具优化数据库设计

Database Engine Tuning Advisor Tuning 的功能

  • Recommend the best mix of indexes for databases by using the query optimizer to analyze queries in a workload.
    [翻译]通过查询优化器分析实际工作负载下的查询,推荐最好的索引组合
  • Recommend aligned or non-aligned partitions for databases referenced in a workload.
    [翻译]为工作状态下用到的数据库推荐对齐(aligned)和非对齐(non-aligned)分区
  • Recommend indexed views for databases referenced in a workload.
    [翻译]为工作状态下用到的数据库推荐带索引的试图
  • Analyze the effects of the proposed changes, including index usage, query distribution among tables, and query performance in the workload.
    [翻译]分析工作状态下,对某种变更的效果进行评估,包括索引用法,表间查询分布,查询效果
  • Recommend ways to tune the database for a small set of problem queries.
    [翻译]对一些有问题的查询进行调优推荐
  • Allow you to customize the recommendation by specifying advanced options such as disk space constraints.
    [翻译]可以通过高级设置,比如磁盘空间大小限制来影响其作出的推荐方案
  • Provide reports that summarize the effects of implementing the recommendations for a given workload.
    [翻译]提供工作状态中其推荐方案的具体实现的效果报告
  • Consider alternatives in which you supply possible design choices in the form of hypothetical configurations for Database Engine Tuning Advisor to evaluate.
    [翻译]分析替代方案,你可以提供不同假设的配置下的设计方案供Database Engine Tuning Advisor分析

索引优化

我们结合示例来看看怎么用调优工具优化索引:

准备工作

我们使用一个缺少索引测试表,来看看在简单的查询条件下,工具能给出什么推荐方案

在我的数据库中有Orders表,其字段如下图,其中大约有50w行数据,在这里我故意没有给Info字段建立索引

创建一个sql语句,模拟实际情况的查询,在这个例子里我们使用一个简单的查询语句

Use [ZhuYiTestDataBase2]--注意一定要记住加上Use的数据库
select * from Orders where Info<>'abc'--我们用了一个没有索引的字段作为查询条件,性能一定不高,看看DETA会有什么高见

并保存为一个.sql文件(在实际运用中,一般一个查询可能要复杂的多)

开始优化

1)运行Database Engine Tuning Advisor,并创建一个Session

2)配置session

在新建的session的配置选项卡中点击General选项卡(如图),进行一些常用配置,有如下项需要配置

  • Session Name:可以为Session起一个名字,默认为用户加创建时间
  • Workload:工作负载,可以从一个文件,可以从表,我们这个例子里就是我们刚才创建的sql文件,DETA会分析这个语句的执行情况,给出优化建议
  • Select database and table to tune:选择需要优化的数据库和表,在本例中就是我们刚才看到Orders表
  • Save tuning log:是否保存优化日志

点击TuningOption选项卡,进行一些高级选项的配置(如图)

  • 首 先我们要选择需要对哪些配置进行优化,在"Physical Design Structures To Use In DataBase"的复选框组中中我们可以需要优化指定索引,索引视图,聚焦索引,或者非聚焦索引,我在本例里面选择Index,这个选项包括聚焦和非聚 焦索引.
  • 接着还有分区(partion)的选择,这个复选框组在实际运用中非常有用,通过查询,可以分析出哪些数据访问频率高,哪些低,从而给出分区的方案,在本例里面我们简单的选择no partition

3)运行分析

点击Action菜单下的Start Analysis,或者运行快捷方式栏的Start Analysis(如图)

4)查看分析结果

等待一段时间后,程序给出了分析结果

从中可以看到聪明的DETA发现了查询中作为条件的Info字段没有索引,建议我们创建一个索引,点击可以看到他的创建脚本(如图)

总结

Database Engine Tuning Advisor的功能远不只这些,我会在接下来的文章里陆续讲一些其他的用法,这里给出一些资源连接,大家可以自己学习

techNet上的参考

http://technet.microsoft.com/en-us/library/ms166805(SQL.90).aspx

繁体中文版本的

http://technet.microsoft.com/zh-tw/library/ms173448(SQL.90).aspx

转载于:https://www.cnblogs.com/yizhu2000/archive/2007/08/06/844394.html

运用工具优化数据库设计(Database Engine Tuning Advisor)相关推荐

  1. SQL Server 官方客户端的三种常用工具 SSMS , SQL Server Profiler , Database Enging Tuning Advisor

    客户端工具路径 以下是我在本地将SSMS 2018安装在C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\之后,不同工具 ...

  2. 一个在线ER模型设计工具:支持数据库设计、生成、反向工程、优化和文档生成等操作

    ER模型介绍 ER模型,即实体关系模型,是数据库建模的一种重要方法.它可以帮助开发人员更好地理解数据库结构,并确定数据库的概念模型.在本文中,我们将详细介绍ER模型设计的基本概念和过程. 首先,我们需 ...

  3. dta导入mysql_使用dta 实用工具优化数据库

    dta 实用工具提供了一个命令提示符可执行文件,可以用来优化数据库.该实用工具使您能够在批处理文件和脚本中使用数据库引擎优化顾问的功能.dta 实用工具使用跟踪文件.跟踪表和 Transact-SQL ...

  4. 用PDMReader工具生成数据库设计文档

    你是否在为写庞大的数据库设计文档发愁,帮你轻松搞定,前提是你需要有pdm文件! 第一步:下载并安装PDMReader(见我的资源里); 第二步:打开PDMReader,新建项目:test: 第三步:在 ...

  5. 用PDMReader工具生成数据库设计文档(转载)

    来源:http://blog.csdn.net/xinglun88/article/details/19987719 第一步:下载并安装PDMReader,资源网站: http://www.pdmre ...

  6. 数据库设计工具PowerDesigner的强大

    一:powerDesigner的使用 1.①:Power Designer 是能进行数据库设计的强大的软件,是一款开发人员常用的数据库建模工具.它直观的反映了数据模型间的关系,有助于人们全面理解数据之 ...

  7. 在线数据库设计工具-toolfk程序员在线工具网

    2019独角兽企业重金招聘Python工程师标准>>> 本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装 ...

  8. 数据库逻辑删除的sql语句_SQL查询优化的数据库设计和逻辑断言

    数据库逻辑删除的sql语句 Database design and Logical Asseveration play a vital role in database performance and ...

  9. (数据库系统概论|王珊)第七章数据库设计-第一节:数据库设计概述

    注意:此部分内容和软件工程的知识点重合较多,更多请点击[免费分享]软件工程核心知识点 本章较分散,各节导航如下 (数据库系统概论|王珊)第七章数据库设计-第二节:需求分析 (数据库系统概论|王珊)第七 ...

最新文章

  1. Linux下root密码忘记的解决办法
  2. torch转mnn笔记
  3. 3D物体识别的如果检验
  4. 用Itext把数据导出到Pdf文档
  5. java 中的finally 语句块执行顺序
  6. 让LoadRunner再次走下神坛
  7. ICC_lab总结——ICC_lab2:设计规划
  8. 【转】Dicom文件解析!!!!!!
  9. 十二赞日志收集与报警系统一览
  10. AE插件Aura Rowbyte Aura for Mac(AE几何粒子渲染效果插件)
  11. java foreach顺序_Java中的LongStream forEachOrdered()方法
  12. table加载动态数据(亲测)
  13. JavaScript 从数组中删除元素方法
  14. 金山词霸 只能最大最小
  15. Android屏幕适配之--自定义像素的缩放比例来实现屏幕适配
  16. MyBatis 学习之路其一:使用mybatis 创建一个简单的程序
  17. scanf()正则表达式的使用
  18. 7 年零故障支撑双 11,消息中间件 RocketMQ 如何做到?
  19. 在线医疗和教育,正在争抢未来!
  20. IDEA技巧:如何根据注释生成swagger注解

热门文章

  1. elementui 按钮 表单_前后端分离,文件上传下载(springBoot+vue+elementUI)
  2. 初识MQ--mq常见技术介绍
  3. 简单了解RestTemplate
  4. MyBatis 源码解读-带着问题去看源码
  5. SpringMVC的请求-获得请求参数-自定义类型转换器
  6. 重载练习2_判断方法的正确重载
  7. POI的入门:概述和创建EXCEL
  8. 单继承-继承的传递性
  9. 算法和时间复杂度概念(一级)
  10. java进程优先级,跨平台方式改变java进程优先级