电话+V:159999-78052 ,欢迎咨询数据库引擎优化顾问使用说明手册,[python实用课程],[C++单片机原理],[C#、PHP网站搭建],[Nodejs小程序开发],[ios游戏开发],[安卓游戏开发],[教会用大脑用想法赚钱实现阶层跨越]
/*
A.SQLServerManagementStudio
是一个集成环境,用于访问,配置,管理和开发SQLServer的所有组件
组合了大量图形工具和丰富的脚本编辑器,使各种技术水平的开发人员和管理员都能访问SQLServer
B.SQLProfiler是一个非常强大的工具,使用它,我们可以捕获和分析数据库中发生的相关的事件
例如,存储过程的执行等.而捕获的信息可以为我们在性能诊断中提供依据
我们通常可以利用SQLServerProfiler完成以下事情:
1.可以监视SQLServer内部发生的各种活动:例如发生在数据库引擎中的活动,发生在AnalysisServices
以及IntegrationServices中的活动
2.监控并且确认某些查询,事务相关的性能问题等
3.可以对执行计划进行分析
4.可以监视并且确认SQLServer内部的发生的一些错误和警告
5.可以捕获数据库发生的数据,并且还可以对数据库的压力进行重放
6.可以对数据库中用户的活动进行审计跟踪
7.可以通过多种方式对数据进行分析与跟踪
8.可以将跟踪的数据与系统的性能计数器关联起来,从而更加全面的检查发生的问题
9.可以将跟踪的数据以DTA来进行分析
10.还可以对SQLProfiler进行编程,可以不使用它的GUI工具
C.SqlServerConfigurationManager
配置管理器,用来启用服务,配置网络协议
SQLServerIntegrationServices:为SSIS包的存储和执行提供管理支持
SQLServerFullTextSearch(MSSQLSERVER):快速创建结构化和半结构化数据的内容和属性的全文索引,以允许对此数据进行快速的语言搜索
SQLServer(SQLEXPRESS):sqlserver体验版数据库的服务
SQLServer(MSSQLSERVER):提供数据的存储、处理和受控访问,并提供快速的事务处理
SQLServerAnalysisServices(MSSQLSERVER):为商业智能应用程序提供联机分析处理(OLAP)和数据挖掘功能
SQLServerReportingServices(MSSQLSERVER):报表服务,只有服务器版本才拥有此服务,启动服务后可在数据库服务器上进行报表开发
SQLServerBrowser:将SQLServer连接信息提供给客户端计算机
SQLServerAgent(MSSQLSERVER):快速创建结构化和半结构化数据的内容和属性的全文索引,以允许对此数据进行快速的语言搜索
如果要运行数据库,必须启动的应该是:
SQLServer(SQLEXPRESS)
SQLServer(MSSQLSERVER)
SQLServerBrowser
D.数据库优化引擎顾问
借助MicrosoftSQLServer数据库引擎优化顾问,您不必精通数据库结构或深谙MicrosoftSQLServer,即可选择和创建索引、索引视图和分区的最佳集合
数据库引擎优化顾问具备下列功能:
通过使用查询优化器分析工作负荷中的查询,推荐数据库的最佳索引组合
为工作负荷中引用的数据库推荐对齐分区或非对齐分区
推荐工作负荷中引用的数据库的索引视图
分析所建议的更改将会产生的影响,包括索引的使用,查询在表之间的分布,以及查询在工作负荷中的性能
推荐为执行一个小型的问题查询集而对数据库进行优化的方法
允许通过指定磁盘空间约束等高级选项对推荐进行自定义
提供对所给工作负荷的建议执行效果的汇总报告
当大家发现数据库查询性能很慢的时候,大家都会想到加索引来优化数据库查询性能,但是面对一个复杂的SQL语句,找到一个优化的索引组合对人脑来讲,真的不是一件很简单的事。
好在SQLSERVER提供了两种“自动”功能,给你建议,该怎么调整索引
第一种是使用DMV
第二种是使用DTA(databaseenginetuningadvisor)数据库引擎优化顾问
这篇文章主要讲第一种
从SQL2005以后,在SQLSERVER对任何一句语句做编译的时候,都会去评估一下,
这句话是不是缺少什么索引的支持,如果他认为是,他还会预估,如果有这麽一个索引
他的性能能提高多少
SQLSERVER有几个动态管理视图
sys.dm_db_missing_index_details
sys.dm_db_missing_index_groups
sys.dm_db_missing_index_group_stats
sys.dm_db_missing_index_columns(index_handle)
sys.dm_db_missing_index_details
这个DMV记录了当前数据库下所有的missingindex的信息,他针对的是SQLSERVER从启动以来所有运行的语句,
而不是针对某一个查询。DBA可以看看,哪些表格SQLSERVER对他是最有“意见”的
以下是这个DMV的各个字段的解释:
1、index_handle:标识特定的缺失索引。该标识符在服务器中是唯一的。index_handle是此表的密钥
2、database_id:标识带有缺失索引的表所驻留的数据库
3、object_id:标识索引缺失的表
4、equality_columns:构成相等谓词的列的逗号分隔列表即哪个字段缺失了索引会在这里列出来(简单来讲就是where后面的筛选字段),
谓词的形式如下:table.column=constant_value
5、inequality_columns:构成不等谓词的列的逗号分隔列表,例如以下形式的谓词:table.column>constant_value“=”之外的任何比较运算符都表示不相等。
6、included_columns:用于查询的涵盖列的逗号分隔列表(简单来讲就是select后面的字段)。
7、statement:索引缺失的表的名称
比如下面这个查询结果
那么应该创建这样的索引
代码如下:
CREATEINDEXidx_SalesOrderDetail_test_ProductID_IncludeIndexONSalesOrderDetail_test(ProductID)INCLUDE(SalesOrderID)
在ProductID上创建索引,SalesOrderID作为包含性列的索引
注意事项:
由sys.dm_db_missing_index_details返回的信息会在查询优化器优化查询时更新,因而不是持久化的。
缺失索引信息只保留到重新启动SQLServer前。如果数据库管理员要在服务器回收后保留缺失索引信息,
则应定期制作缺失索引信息的备份副本
sys.dm_db_missing_index_columns(index_handle)
返回与缺少索引(不包括空间索引)的数据库表列有关的信息,sys.dm_db_missing_index_columns是一个动态管理函数
字段解释
index_handle:唯一地标识缺失索引的整数。
sys.dm_db_missing_index_groups
返回有关特定缺失索引组中包含的缺失索引(不包括空间索引)的信息
sys.dm_db_missing_index_group_stats
返回缺失索引组的摘要信息,不包括空间索引
这个视图说白了就是预估有这麽一个索引,他的性能能提高多少
有一个字段比较重要:
avg_user_impact:实现此缺失索引组后,用户查询可能获得的平均百分比收益。该值表示如果实现此缺失索引组,则查询成本将按此百分比平均下降。
就是说,增加了这个缺失索引,性能可以提高的百分比
下面是MSDN给出的示例,缺失索引组句柄为2
代码如下:
--查询提供缺失索引的数据库、架构和表的名称。它还提供应该用于索引键的列的名称
USE[AdventureWorks]
GO
SELECTmigs.group_handle,mid.*
FROMsys.dm_db_missing_index_group_statsASmigs
INNERJOINsys.dm_db_missing_index_groupsASmig
ON(migs.group_handle=mig.index_group_handle)
INNERJOINsys.dm_db_missing_index_detailsASmid
ON(mig.index_handle=mid.index_handle)
WHEREmigs.group_handle=2
示例代码:
代码如下:
USE[AdventureWorks]--要查询索引缺失的数据库
GO
SELECT*FROMsys.[dm_db_missing_index_details]
SELECT*FROMsys.[dm_db_missing_index_groups]
SELECT*FROMsys.[dm_db_missing_index_group_stats]
SELECT*FROMsys.[dm_db_missing_index_columns](1)--1:1是根据dm_db_missing_index_details查出来的
我估计XX大侠做的SQLSERVER索引优化器也使用了"sys.dm_db_missing_index_details"这个DMV
刚才看了一下,好像有错别字:TotalCost不是TotolCost
暂时不知道TotalCost跟ImprovementMeasure怎麽算出来的
注意:
最后大家还需要注意一下,虽然这些DMV给出的建议还是比较合理的。
但是,DBA还是需要去确认一下建议。因为这个建议完全是根据语句本身给出的,
没有考虑对其他语句的影响,也没有考虑维护索引的成本,所以是很片面的。
其准确性,也要再确认一下
上面几个DMV的字段解释,大家可以看一下MSDN,非常详细
sys.dm_db_missing_index_group_stats
msdn:http://msdn.microsoft.com/zh-cn/library/ms345421.aspx
sys.dm_db_missing_index_groups
msdn:http://msdn.microsoft.com/zh-cn/library/ms345407.aspx
sys.dm_db_missing_index_columns([sql_handle])
msdn:http://msdn.microsoft.com/zh-cn/library/ms345364.aspx
sys.dm_db_missing_index_details
msdn:http://msdn.microsoft.com/zh-cn/library/ms345434.aspx
您可能感兴趣的文章:浅析SQLServer聚焦索引对非聚集索引的影响浅述SQLServer的聚焦强制索引查询条件和ColumnstoreIndex浅析SQLServer的聚焦使用索引和查询执行计划详解sqlserver查询表索引SQLSERVER2008R2重建索引的方法SQLSERVER全文目录全文索引的使用方法和区别讲解SQL_Server全文索引的使用实例演示SQL_Server全文索引的用法解析SQLSERVER对索引的利用及非SARG运算符认识sqlserver索引的原理及索引建立的注意事项小结sqlserver2005自动创建数据表和自动添加某个字段索引SQLServer数据库索引其索引的小技巧详解SQLServer的聚焦过滤索引
电话+V: 159999-78052
机构由一批拥有10年以上开发管理经验,且来自互联网或研究机构的IT精英组成,负责研究、开发教学模式和课程内容。公司具有完善的课程研发体系,一直走在整个行业发展的前端,在行业内竖立起了良好的品质口碑。