首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事
您的当前位置:首页正文

Sql性能检测工具:Sql server profiler和优化工具:Database Engine Tuning Advisor

2023-11-12 来源:好兔宠物网
原文:Sql性能检测工具:Sql server profiler和优化工具:Database Engine Tuning Advisor

一、工具概要? ? 数据库应用系统性能低下,需要对其进行优化,? ? 如果不知道问题出在哪里,可以使用性能检测工具sql server profiler。? ? 如果知道问题出在哪里,却不知道如何解决,可以使用数据库引擎优化顾问Database Engine Tuning Advisor二、sql server profiler功能:检测到数据库中的所有操作,把监视的内容记录到数据库或者是文件中。文件--新建跟踪--显示跟踪属性窗口技术分享图片首先那个select%是个筛选监测的TextData。那个%是个通配符,他的意思就是筛选select开口的语句。当然这你自己可以随便定义,如update%,delete%....。把那个排除不包含值的行也给带上,然后确定,运行。然后在数据库中运行一句select。你会发现他检测到啦。每列以此向右,从EventClass开始,我给你讲讲都是什么。? ? 事件分类,申请了语句,应用程序名称,操作系统用户,数据库用户,cpu占用率,读数据库次数,写数据库次说,执行脚本用时,应用程序进程号,开始时间,结束时间等。? ? 事件选择,你就把鼠标放上去,他下面有中文的注释。自己好好看看,然后根据你自己的需要把事件勾选上来。? ? ?然后文件-->>另存为,可以把这些监测到的数据保存为文件,或数据表。技术分享图片1.查找持续时间最长的查询? ?一般情况下,最长查询时间的查询语句就是最影响性能的原因存在。它不仅占用数据库引擎大量的时间,还浪费系统资源,还影响数据库应用系统的交互速度。再对数据用应用系统进行优化时,先找出他,对其优化,在创建跟踪时,勾上TSQL-SQL:BatchCompleted.跟Stored Procedures-RPC:completed。这样就能找出来这个最长时间查询然后对其进行分析优化。技术分享图片

select TextData,Duration,CPU from TraceFileDataTablewhere EventClass=12 -- 等于12表示BatchCompleted事件 and CPU<(0.4*Duration) --如果cpu的占用时间,小于执行sql语句时间的40%,说明该语句等待时间过长
技术分享图片2.最占用系统资源的查询? ? 就是占用cpu时间,跟读写IO的次数。建议事件包含Connect、Disconnect、ExistingConnection、SQL:BatchCompleted、RPC:completed,列包含writes,reads,cpu。3.检测死锁? ? 在访问量,并发量都很大的数据库中,如果设计稍不合理,就有可能造成死锁,给系统性能带来影响。事件包含:RPC:Starting、SQL:BatchStarting、Lock:DeadLock(死锁事件)、Lock:DeadLockChaining(死锁的事件序列)。三、数据库引擎优化顾问Database Engine Tuning Advisor? ? 数据库引擎优化顾问先是接受sql server profiler检测出来的sql,视图,存储过程,数据结构等等,然后他再自己分析,给出更好的索引,统计,分区等等建议信息。打开之后,你在上一个工具中保存的的文件,你就在这里的工作负荷中选文件,表就选表,把要分析的数据库跟数据库的表选上,也就是下面的用于工作负荷分析的数据库选择,跟下面的要优化的数据库和表技术分享图片然后选则你想要的优化选项技术分享图片根据需要,选上,高级选项里面通常可以默认。确定。然后点左上角有一个开始分析。分析完成技术分享图片

Sql性能检测工具:Sql server profiler和优化工具:Database Engine Tuning Advisor

标签:disco   net   text   http   速度   数据   开始时间   nts   数据库应用   

小编还为您整理了以下内容,可能对您也有帮助:

哪个sql server工具帮助数据库管理员分析和调试服务器的性能

一、SQL Profiler工具简介

SQL Profiler是一个图形界面和一组系统存储过程,其作用如下:

图形化监视SQL Server查询;

在后台收集查询信息;

分析性能;

诊断像死锁之类的问题;

调试T-SQL语句;

模拟重放SQL Server活动;

也可以使用SQL Profiler捕捉在SQL Server实例上执行的活动。这样的活动被称为Profiler跟踪。

1、Profiler跟踪

从开始=》所有程序=》Microsoft SQL Server 2008=》性能工具打开Profiler工具,也可以打开SQL Server Management Studio=》工具=》SQL Server Profiler。

然后选择文件=》新建=》跟踪打开一个连接窗口,选择将要跟踪的服务器实例然后连接。打开如下“跟踪属性”对话框。

如果有许多跟踪,可以提供一个跟踪名称来帮助在以后进行分类。不同的跟踪模板可帮助建立用于不同目的的跟踪。

打开跟踪属性窗口后,单击“事件选择”选项卡,为跟踪提供更详细的定义。

2、事件

一个事件表现SQL Server中执行的各种活动。这些活动可以简单地分类为事件类,游标事件,锁事件,存储过程事件和T-SQL事件是常见的事件类。

对于性能分析,主要对SQL Server上执行的各种活动的资源压力水平的事件感兴趣。资源压力主要包含如下内容:

SQL活动涉及哪一类的CPU使用?

使用了多少内存?

涉及多少I/0操作?

SQL活动执行了多长时间?

特定的查询执行的频率有多高?

查询面对哪类错误和警告?

下面给出跟踪查询结束的事件:

事件类 事件 说明

Stored Proceres RPC:Completed RPC完成事件

SP:Completed 存储过程完成事件

SP:StmtCompleted 在存储过程中一条SQL语句完成事件

T-SQL SQL:BatchCompleted T-SQL批完成事件

SQL:StmtCompleted 一条T-SQL语句完成事件

RPC事件表示存储过程使用远程过程调用(RPC)机制通过OLEDB命令执行。如果一个数据库应用程序使用T-SQL EXECUTE语句执行一个存储过程,那么存储过程将被转化为一个SQL批而不是一个RPC。RPC请求通常比EXECUTE请求快,因为它绕过了SQL Server中的许多语句解析和参数处理。

T-SQL由一条或多条T-SQL语句组成。语句或T-SQL语句在存储过程中也是单独和离散的。用SP:StmtCompleted或SQL:StmtCompleted事件捕捉单独的语句可能是代价很高的操作,这取决于单独语句的数量。假设系统中的每个存储过程包含且只有一条T-SQL语句。在这种情况下,完成的语句集合相当小。现在假定过程中有多条语句,而且这些过程中有些使用其他语句调用其他过程。收集所有这些额外的数据现在变成系统上非常厉害的负载。在生产机上一定要慎用。

现在回到那个事件选择面板,只有已经被选择的事件才会被显示。如果想显示所有可供选择的事件,则只需选中“显示所有事件”单选框,要添加一个跟踪事件,在Event列中查找一个事件类下的事件,并单击其左边的检查框;要删除不需要的事件,取消选中的事件选择框。

光分类就有好多的说:

下面给出其他一些与性能诊断有关的事件:

事件类 事件 说明

Security Audit(安全审计) Audit Login(登录审计) 记录用户连接到SQL Server或断开连接时数据库的连接

Audit Logout(注销审计)

Sessions(会话) ExistingConnection(现有连接) 表示所有在跟踪开始之间连接到SQL Server的用户

Cursors(游标) CursorImplicitConversion(游标隐含转换) 表明创建的游标类型与所请求的类型个不同

Errors and Warnings(错误和警告) Attention(注意) 表示由于客户端撤销查询或者数据库连接破坏引起请求中断

Exception(异常) 表明SQL Server发生了异常

Execution Warning(执行警告) 表明在查询或存储过程执行期间出现了警告

Hash Warning(哈希警告) 表明hash操作发生了错误

Missing Column Statistics(列统计丢失) 表明优化器要求的确定处理策略用的类统计丢失

Missing Join Predicate(连接断言丢失) 表明查询在两个表没有连接断言情况下执行

Sort Warning(排序警告) 表明像SELECT这样的查询中执行排序操作没有合适的内存

Locks(锁) Lock:Deadlock(死锁) 标志着死锁的出现

Lock:Deadlock Chain(死锁链) 显示产生死锁的查询链条

lock:Timeout(锁超时) 表示锁已经超过其超时参数,该参数由SETLOCK_TIMEOUT timeout_perious(ms)命令设置

Stored Proceres(存储过程) SP:Recompile(重编译) 表明用于一个存储过程的执行计划必须重编译,原因是执行计划不存在,强制的重编译,或者现有的执行计划不能重用

SP:Starting(开始)

SP:StmtStarting(语句开始)

分别表示一个SP:StmtStarting存储过程和存储过程中的一条SQL语句的开始。他们对于识别开始单因为一个操作导致Attention事件未能结束的查询很有用

Transactions(事物) SQLTransaction(SQL事务) 提供数据库事务的信息,包括事务开始/结束的时间、事务持续事件等信息

3、事件列

  事件以不同的特性(被称为数据列)来表现。数据列表现一个事件的不通特性,如事件的类、用于该事件的SQL语句、事件的资源开销以及事件来源。

数据列 说明

EventClass(事件类) 事件类型,如SQL:StatementCompleted

TextData 事件所用的SQL语句,如SELECT * FROM Person

CPU 事件的CPU开销(以ms表示),如对一个SELECT语句,CPU=100表示该语句执行100ms

Reads 为一个事件所执行的逻辑读操作数量。例如对一个SELECT语句,Reads=800表示该语句需要800次逻辑读操作

Writes 为一个事件所执行的逻辑写操作数量

Duration 事件的执行时间(ms)

SPID 用于该事件的SQL Server进程标识符

StartTime 事件开始的时间

  以上是常用的数据列,另外还有一些不太常用的数据列:

BinaryData(二进制数据)

IntegerData(整数数据)

EventSubClass(事件子类)

DatabaseID(数据库标识符)

ObjectID(对象标识符)

IndexID(索引标识符)

TransactionID(事务标识符)

Error(错误)

EndTime(结束时间)

列数据可以重新安排以符合你自己所喜欢的风格,要控制列数据的安放,单击组织列按钮,将打开如下对话框。可以单击Up和Down按钮修改列的位置,将列移入Groups意味着它将成为一个合计列。

  

4、列筛选器

除了为一个Profiler跟踪定义事件和数据列之外,还可以定义各种过滤条件。这些条件帮助缩小跟踪的输出,这往往是一个好主意。下面给出常用过滤条件列表。

事件 过滤条件实例 用处

ApplicationName(应用程序名称) Not like:SQL Profiler 过滤Profiler生成的事件。这是默认的行为

DatabaseID(数据库标识符) Equals:<ID of the database to monitor> 过滤特定数据库生成的事件。数据库ID:SELECT DB_IC('Northwind')

Duration(持续时间) Greater than or equal:2   对于性能分析,经常会为一个大的工作负载捕捉跟踪,在大的跟踪中,许多事件日志具有比所感兴趣更小的持续周期(Duration)。过滤这个事件日志,因为几乎没有可用于优化这些SQL活动的余地

Reads(读操作数) Greater than or equal"2 过滤读操作较小的事件

SPID

Equals:<Database users to monitor>

定位由特定的数据库用户发送的查询

  下面给出设置过滤列的方式:

sql server profiler 怎么看sql语句

一、SQL

Server

Profiler使用方法

1、单击开始--程序--Microsoft

SQL

Server

2005--性能工具--SQL

Server

Profiler,  

2、弹出Sql

server

Profiler窗口

3、在工作窗口内,鼠标单击“文件---【新建跟踪(N)...】”,弹出数据库连接对话窗口,在对话窗口内输入跟踪的数据库服务器名称、用户名和密码等信息,如下图:

4、输入完成后,单击连接按钮,弹出跟踪属性窗口,窗口中左边的“常规”选项卡是一个基本设置,一般使用默认的就OK了。右边的“事件选择”选项卡,用来设置要跟踪的事件有哪些,列表的事件可以一一选择,基本上Sql上有的事件都有,包括你用SQL

Server

Management

Studio操作数据库的过程都可以跟踪的到,只要单击显示所有事件就可以进行全部事件的选择了。

在“事件选择”选项卡中还可以对统计的字段进行筛选,单击任意一个列标题可以查看列的说明,如下图:

上图依次说明为:

TextDate

依赖于跟踪中捕获的事件类的文本值;

ApplicationName

创建

SQL

Server

连接的客户端应用程序的名称。此列由该应用程序传递的值填充,而不是由所显示的程序名填充的;

NTusername

Windows

用户名。

LoginName

用户的登录名(SQL

Server

安全登录或

Windows

登录凭据,格式为“域\用户名”)

CPU

事件使用的

CPU

时间(毫秒)。

Reads

由服务器代表事件读取逻辑磁盘的次数。

Writes

由服务器代表事件写入物理磁盘的次数。

Duration

事件占用的时间。尽管服务器以微秒计算持续时间,SQL

Server

Profiler

却能够以毫秒为单位显示该值,具体情况取决于“工具”>“选项”对话框中的设置

ClientProcessID

调用

SQL

Server

的应用程序的进程

ID。

SPID

SQL

Server

为客户端的相关进程分配的服务器进程

ID。

StratTime

事件(如果可用)的启动时间。

EndTime

事件结束的时间。对指示事件开始的事件类(例如

SQL:BatchStarting

SP:Starting)将不填充此列。

BinaryData

依赖于跟踪中捕获的事件类的二进制值。

5、设置完成后,单击“运行”按钮就可以,当然如果有兴趣的话你也可以对列进行重新排列和筛选,只要单击下面相应的按钮根据提示操作就要可以了。

sql server profiler 是什么文件

SQL Profiler是一个非常强大的工具,使用它,我们可以捕获和分析数据库中发生的相关的事件,例如,存储过程的执行等。而捕获的信息可以为我们在性能诊断中提供依据。

通常,通过 SQL Server Profiler 访问 SQL 跟踪。还可以使用 Transact-SQL 系统存储过程来访问 SQL 跟踪。SQL Server Profiler 可以使用 SQL 跟踪的全部事件捕获功能并添加跟踪表信息、将跟踪定义保存为模板、提取查询计划和死锁事件作为单独的 XML 文件以及重播跟踪结果以进行诊断和优化的能力。

一、我们通常可以利用SQL Server Profiler完成以下事情:

1.可以监视SQL Server内部发生的各种活动:例如发生在数据库引擎中的活动,发生在Analysis Services以及Integration Services中的活动。

2.监控并且确认某些查询,事务相关的性能问题等。

3.可以对执行计划进行分析。

4.可以监视并且确认SQL Server内部的发生的一些错误和警告。

5.可以捕获数据库发生的数据,并且还可以对数据库的压力进行重放。

6.可以对数据库中用户的活动进行审计跟踪。

7.可以通过多种方式对数据进行分析与跟踪。

8.可以将跟踪的数据与系统的性能计数器关联起来,从而更加全面的检查发生的问题。

9.可以将跟踪的数据以DTA来进行分析

10.还可以对SQL Profiler进行编程,可以不使用它的GUI工具。

二、如何创建跟踪

1、在“文件”菜单上,单击“新建跟踪”,并连接到 SQL Server 实例。 此时,将显示“跟踪属性”对话框。

2、在“跟踪名称”框中,键入跟踪的名称。

3、在“使用模板”列表中,为此跟踪选择一个跟踪模板;如果不想使用模板,请选择“空白”。

4、若要保存跟踪结果,请执行下列操作之一:

单击“保存到文件”将跟踪捕获到文件中。指定“设置最大文件大小”的值。默认值为 5 MB。或者,选择“启用文件滚动更新”,以便当文件大小达到最大值时自动创建新文件。也可以选择“服务器处理跟踪数据”,由正在运行跟踪的服务而不是客户端应用程序来处理跟踪数据。在服务器处理跟踪数据时,即使是在压力较大的情况下也不会跳过事件,但是服务器性能可能会受到影响。

单击“保存到表”将跟踪捕获到数据库表中。

5、根据需要,可以单击“设置最大行数”,并指定值。

6、根据需要,可以选中“启用跟踪停止时间”复选框,再指定停止日期和时间。

7、若要添加或删除事件、数据列或筛选器,请单击“事件选择”选项卡。

8、单击“运行”启动跟踪功能

如何监测和优化OLAP数据库

优化在线分析处理的性能是非常重要的,幸运的是,一些工具可以帮助监测和改善OLAP数据库的运行。

微软SQLServer分析服务(SSAS)提供了一个用来创建和管理数据挖掘应用和在线分析处理系统的强大引擎,为了取得最佳的OLAP性能,你应该仔细的监测和优化OLAP数据库和潜在的关系数据源,本文介绍了监测SSAS和优化OLAP性能的工具。

SQLServer Profiler

你可以使用SQL ServerProfiler基于选择好的事件来捕获SSAS实例的活动,SQL Server Profiler以跟踪的方式来捕获活动并且包含了一套满足最常见的跟踪捕获场景的预定义的模板,可以将跟踪到的信息保存到一个文件或者是一个允许你实时监测数据的SSAS的数据库中,也可以实时的或者是一步一步的在同一个或者是另一个SSAS实例上重放跟踪,通过对跟踪进行重放,能够轻易地找到运行慢的表达式,或者是MDXes,比较不同环境下的性能基准进行测试和调试,你也能够使用SQL Server Profiler对安全进行审核,比如说,可以设置用来审核失败的链接尝试或者是一个用户试图访问一个未经授权的对象时许可失败的跟踪文件,关于如何创建和运行跟踪的详细内容,请看为重放(分析服务)创建分析跟踪和分析服务跟踪事件。

系统监视器

监控本地和远程SSAS实例和操作系统以及所运行的计算机性能的一个最常使用的工具是系统监视器,这是一个Windows性能的实用组件,提供了近乎实时的仅被用来实时监控的性能信息,并且是被看作用来测量性能和识别硬件瓶颈的最好的工具之一,但是,你不能使用系统监视器来鉴定性能问题的原因,比如说,系统监视器也许显示高的CPU使用率,但是不会标识出原因;你可以从一个位置使用系统监视器来监控多个计算机,对于每一个需要监控的系统来讲可以减少资源占用,并且给了你一种直接比较不同计算机的性能统计的方法。

扩展事件和分析服务动态管理视图

扩展事件(XEvents)是一个对系统资源占用非常少的一个高伸缩性和轻量级性能监视系统的事件基础架构,使用XEvents,可以捕获针对所有 SSAS事件给到指定的用户,XEvents基础架构已经被直接集成到了SQLServer并且可以使用T-SQL简单的进行管理,更多的信息请看SQL Server扩展事件。

分析服务动态管理视图(DMVs)是用来提供大量的关于分析服务实例状态和服务器健康信息的查询结构,使用这些信息能够诊断和调优分析服务实例或者是数据库性能,所有的DMVs都内置于$System中,关于使用DMVs监控分析服务的更多信息,请查看MSDN资源。

以上是用来监测SSAS和OLAP性能的工具,下面是优化OLAP应该考虑的地方。

使用索引

索引可以提高影响在线分析处理(MOLAP)分区处理速度和关系在线分析处理(ROLAP)分区查询速度的基础数据库的查询性能,大部分分析服务数据库是只读的因此可以从索引中受益,一般的经验法则是创建覆盖所有分析服务执行的查询,另外,为了实现最佳的性能,你应该创建的所有索引应该使用100%的填充因子。

在基础数据库中成本消耗会关系到使用的索引,比如,更新数据的查询(INSERT, UPDATE或者DELETE)也一定会修改索引,因此,大量的索引会降低这些DML操作(INSERT,UPDATE or DELETE)的性能,但是,这个不会影响到一个只读系统,另外,索引会占用时间和磁盘空间,最好的做法是使用SQL Server Profiler和数据库引擎优化向导或者和索引相关的DMVs和动态管理函数DMFS定期的分析查询和索引的使用,这样能帮助你发现需要创建的索引以及删除掉的索引。

选择适当的聚合

查询性能在很大程度上依赖于适当的聚合,但是没有必要在每一个维度的级别上添加聚合,当使用聚合设计向导(Aggregation Design Wizard)或者是Usage-Based优化向导时,你应该从较低的值开始尝试不同的性能增益值,最初,当你提高了性能增益值时会注意到主要的查询速度的提高,尽管性能增益值提高了,也常常会有收益递减,每一次性能的提升使得磁盘空间的增长逐步升级,你也能够使用搜索日志来存储用户查询以备为将来分析使用,使用Usage-Based优化向导对查询日志数据优化聚合,你也能使用聚合设计向导创建适当的聚合,对于一个拥有较少或者是没有查询日志数据的新的系统来讲聚合设计向导是非常有用的,而当一个系统成熟时Usage-Based优化向导会产生较好的结果。

使用主动缓存

为了在查询OLAP数据库时达到较快的效果,你必须使用MOLAP存储,但是,如果你使用了MOLAP,因为它是周期性的处理数据的,所以数据会有一些延迟,为了获得最新的数据,你也必须使用ROLAP存储,但是ROLAP的存储性能要比MOLAP在查询响应方面明显的慢,那就是主动缓存配置选项很有用的地方了,因为它允许分析服务可以从MOLAP和ROLAP两边检索,因此为使用了ROLAP的最新数据的MOLAP提供了效能,可以在MSDN资源中发现更过的关于主动缓存的信息。

如何监测和优化OLAP数据库大家知道了吗?希望可以应用到大家的工作当中。您可能感兴趣的文章:sqlserver关于分页存储过程的优化【让数据库按我们的意思执行查询计划】优化SQL Server的内存占用之执行缓存Sql Server查询性能优化之不可小觑的书签查找介绍Sql Server 查询性能优化之走出索引的误区分析Sql Server 索引使用情况及优化的相关Sql语句分享SqlServer 索引自动优化工具SQL Server优化50法汇总sql语句优化之SQL Server(详细整理)人工智能自动sql优化工具--SQLTuning for SQL Serversqlserver数据库优化解析(图文剖析)SQL Server多表查询优化方案集锦

显示全文