全部博文(141)
分类: 数据库开发技术
2012-05-11 08:34:39
可以说说SQL Profiler是一个非常强大的工具,使用它,我们可以捕获和分析数据库中发生的相关的事件,例如,存储过程的执行等。而捕获的信息可以为我们在性能诊断中提供依据。
如果你对SQL Profiler不是很熟悉,那么,本篇文章将会带着你一步步的熟悉。在这篇文章中,我会讲述SQL Profiler的工作原理,还会解释在后面文章要常常要用的一些术语,同时也会讲述如何保持一个Profiler Traces跟踪文件。
通过本篇文章的越多,朋友们会清楚如下的问题:
在开始学习任何一门技能之前,我们需要知道:为什么要学习这门技能,学习完了之后,可以给我们带来什么好处?毕竟人的精力是有限的,不可能随随便便学习一门对自己毫无用处的知识。
可以这样说:区分一个有经验的DBA与一个新手DBA的区别就在于:有经验的DBA知道在核实充分利用何种工具可以快速的将问题搞定(其实我本身也是一个开发人员,通俗点说,就是写应用代码的,不算是真正DBA,因为很多的时候,在项目中,没有DBA,所以不得不扮演很多的角色,所以学习了不少的技能)。
如果熟练的掌握了SQL Profiler之后,有经验的DBA就可以对数据库的运行状况进行跟踪,并且利用跟踪的数据进行问题的分析与性能的诊断与优化,有时候,甚至可以再问题还没有发生之前发现潜在的问题。
我们把掌握SQL Profiler的好处列下来:
说了这么多,似乎已经把SQL Profiler说的天花乱坠了!其实SQL Profiler也不是万能的,也只是在SQL Server诊断与分析中常常使用的一种工具而已,至于决定到底是否在使用它,还是取决于DBA或者技术人员本身,通过本系列的学习,相信大家会有一个比较清楚的认识。
首先,我们来简要的看看SQL Server Profiler的工作原理。
SQL Server Profiler的工作原理
其实SQL Server Profiler这个工具是SQL Trace的一个GUI的版本,而SQL Trace是一组脚本,自SQL Server 2000就已经有了的,这一组脚本捕获和跟踪SQL Server内部发生一些事件,并且将跟踪的数据保存以便后续使用。
从本质上说,SQL Trace就是一个非常简单的工具,它的作用就是捕获客户端应用与SQL Server之前的通信的信息。它扮演中一个非常特殊的网络嗅探器的功能,用来捕获与SQL Server相关的网络活动,同时也允许我们查看客户端应用的请求触发了SQL Server的哪些事件。
另外,与我们熟悉的网络嗅探器不同的是:SQL Trace只是捕获发生在SQL Server内的相关的事件和活动,而不会获取网络上面传输的数据。
为了使得大家对SQL Trace有一个更加清楚的认识,我们来看看下面的一个图1-1:
那么对于上面的图1:
为了后续的理解方便,也为了保证我们的理解一致,我们下面介绍一些常见的概念和术语。
SQL Profiler中常用的术语概念
这里主要介绍下面四个术语:
事件(Events)
数据列(Data Columns)
过滤器(Filters)
跟踪(Trace)
事件
相信熟悉微软技术的朋友对“事件”这个概念已经不陌生了,简而言之就是发生的活动,例如一个存储过程的执行,就是一个活动,也是发生了一个事件。SQL Profiler允许我们捕获大约170多种不同的与SQL Server有关的时间。
另外,在SQL Profiler中,使用Event Category这个概念,对不同的事件进行了一个大致的分类,使得为我们的监控更加的方便,例如所有与存储过程相关的事件都被划分在一个分类中。
数据列
这个概念理解起来非常简单,简而言之就是描述事件发生的一些信息。这个概念和我们在.NET编程中的事件信息的概念是一样的。如图1-2所示,可以看到事件发生的时候,包含了一些实事件信息,即数据列。
图1-2中列出了很多事件的数据列,例如,对于RPC:Completed事件而言,包含了TextData,ApplicationName等。同时,还可以看出 ,不是所有事件都有相同的数据列。
过滤器
顾名思义,过滤器主要是SQL Profiler用来对发生的事件进行过滤的,只捕获感兴趣的事件。可以根据很多的来创建灵活的过滤,如图1-3所示:
过滤器在使用SQL Profiler中非常有用,因为它可以决定我们收集到的数据的正确性,更加对收集到的数据的量产生很多的影响。
跟踪
请注意:这里的跟踪,不是个动词,而是一个名词!每一个跟踪包含了发生的事件以及相关的数据列信息,并且我们常常将这些信息保存在物理的文件中。其实,我们常常所说的跟踪,就是一个保存SQL Profiler数据的跟踪文件。
跟踪文件可以以很多的方式保存:保存在内存中,以特定的格式导出,保存在数据库中,保存为XML文件等。如图1-4所示,就现在SQL Profiler中直接显示了跟踪信息,即跟踪信息保存在内存中:
本篇就暂时介绍到这里,下一篇,就和大家一起来看看,如何快速的使用SQL Profiler。