仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1010|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL网站制作之SQL SERVER 2000体系撑持的跟踪函数

[复制链接]
分手快乐 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:37:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
解决方案提供商应记住DBaaS通常仅仅是解决方案的一部分。客户之所以与他们的解决方案提供商协同工作,不仅是因为他们出售的产品,而且还因为他们所提供的服务。server|函数你们年夜部分人大概已在SQLSERVER中创建本人的用户界说函数(UDF),可是你晓得么?微软公司已集成了大批本人的UDFs,出格是在最新公布的SP3中.在这篇文章中BayaPavliashvili和KevinKline体系地研讨了关于SQLSERVER跟踪部分的UDF.你们中的一些人大概想浏览之前SQLServerProfessional的一篇关于传统UDFs的文章,好比AndrewZanevskys2000年9月的专栏("GrantingWisheswithUDF"),AndrewZanevskyandAntonJilines2001年10月的文章("UDFPerformance…orLackofIt"),或JimmyNilssons2003年7月的文章("AnotherUDF:GlobalConstants").
UDFs是SQLServer2000等候已久的附加功效,UDFs典范的使用是DBAs和开辟者用来模块化代码和间或用来进步功能.在这篇文章中,我们将从零入手下手懂得SQLSERVER体系供应的UDFs,能够同意DBA举行跟踪办理.
固然体系供应的用户界说函数听起来有一点冲突,但微软仍是集成大批的外部的UDFs(只读,体系供应).同时,只管UDFs这个特征在SQLSERVER2000最后公布是就供应了,不外我们发明只是在SP3中微软才由于本人的目标而大批利用,一切体系供应的UDFs函数都是以’fn_’入手下手而且保留在master数据库中.
对照体系供应的和尺度的UDF
假如你熟习UDFs,你大概晓得UDF是不克不及修正流动表的纪录,典范的使用是:读取数据,修正表变量的数据,前往数据.并且UDFs能够运转扩大存储历程和体系供应的自界说函数.现实上有良多的体系供应的自界说函数只是复杂的挪用一个扩大存储历程.[扩大存储历程一般是有C++写的DLL文件,你能够看PaulStorer-Martins在2002年7月和8月的文章"PlayingtheODS"],因而浏览用T-SQL写的UDF不异功效的代码不是更好么?体系供应的自界说函数和用户的自界说函数在运转时有稍微的不同:典范的自界说函数(UDFs)能够向如许挪用:
SELECTcolumn_list
FROMowner_name.UDF_name(@parameter1,…@parameterN)
体系供应的自界说函数必要在FROM前面加二个冒号(::),同时你不用指定该功效的一切者:
SELECTcolumn_list
FROM::fn_SystemSuppliedUDF
(@parameter1,…@parameterN)
好比:体系供应的自界说函数fn_helpcollations()能够前往SQLSERVER2000撑持的一切字符集,我们能够如许实行:
SELECT*FROM::fn_helpcollations()
用于跟踪的自界说函数(UDFs)
一条跟踪捕捉的T-SQL语句发给(或运转一个存储历程在)指定的SQLSERVER的实列而且保留为一个*.TRC的文件.SQLSERVER的跟踪能够经由过程Profiler工具或运转体系的存储历程sp_trace_create创建而且能够指定很多过虑的尺度来限定输入文件.在这篇文章中,我们次要针对跟踪功效的体系供应的自界说函数.
fn_trace_gettable
fn_trace_gettable()必要二个参数:初始化的跟踪文件名(.TRC)和跟踪文件的个数.当你创建一个跟踪,你能够设置SQLSERVER限定跟踪文件的巨细.当跟踪文件抵达指定的巨细,SQLSERVER会字段发生一个新的”转动的”跟踪文件.fn_trace_gettable()函数的第二个参数是”转动的”跟踪文件的个数,这是在指定第一个参数时入手下手的.
假如你喜好将跟踪的新年保留在数据库中,你能够复杂地运转一个查询,经由过程fn_trace_gettable将跟踪文件保留为一个数据表,好比:
SELECT*
INTOdbo.my_trace_table
FROM::fn_trace_gettable
(c:        race_file.trc,default)
并且,能够十分便利间接查询,搜刮一些特别寄义的字符串.在我们的测试情况中,一切的用户界说的存储历程以”USP”入手下手,因而我们能够运转一个查询,搜刮延续工夫凌驾3000ms的纪录:
SELECTTextData,duration
FROM::
fn_trace_gettable(c:        race_file.trc,default)
WHERETextDataLIKE%usp%
ANDduration>3000
经由过程加倍庞大的查询,我们能够简练SELECT语句来断定哪些查询分歧运转地对照慢仍是只在岑岭期.
fn_trace_getinfo
这个体系供应的自界说函数能够失掉一个跟踪的初级别信息或在一个SQLSERVER上运转的一切正在运转的跟踪.这个函数只要一个参数―跟踪的编号(TRACEID)
为了限定一个跟踪的信息,你必需指定跟踪标记符.你也能够指定DEFAULT或”0”,作为跟踪标记符,如许能够取得一切的运转的跟踪信息.SQLSERVER在创建跟踪时给每个跟踪分派一个跟踪标记符,假如你不指定你要查询的跟踪标记符,复杂的以参数”0”运转该体系函数,然后你能够限定跟踪输入你感乐趣的内容.fn_trace_getinfo体系函数的输入形貌如表一:
表1.ffn_trace_getinfo的输入.
列名
形貌
TraceID
此跟踪的ID.能够被用来经由过程体系存储历程来办理跟踪
Property
跟踪的属性,由以下整数暗示:
1C跟踪选项(请拜见sp_trace_create中的@options
2CFileName
3CMaxSize
4CStopTime
5C
以后跟踪形态
Value
有关指定跟踪的属性的信息。

跟踪的选项能够经由过程体系存储历程sp_trace_create来指定(看表2)
表2.跟踪的选项能够经由过程体系存储历程sp_trace_create来指定
选项名
选项值
形貌
Trace_produce_rowset
1
跟踪将发生一个行集
Trace_file_rollover
2
当到达max_file_size时,将封闭以后跟踪文件并创立新文件.SQLSERVER会主动为每一个文件增添序列编号(1,2,3….)
Shutdown_on_error
4
假如不克不及将跟踪写进文件,则SQLServer将封闭。
Trace_produce_blackbox
8
假如这个选项被选中,SQLSERVER的最初5MB跟踪信息纪录将由服务器保留

上面我们看一个实列来懂得fn_trace_getinfo是怎样事情的.假想我们经由过程上面的查询创建一个跟踪:
/*declareavariabletoholdtraceID*/
DECLARE@trace_idINT
/*createthetrace*/
EXECsp_trace_create
@traceid=@trace_idOUTPUT,
@options=2,
@tracefile=Ne:        race_file.trc,
@maxfilesize=5,
@stoptime=NULL
/*startthetracewejustcreated.
bydefaultthetraceisstoppedatcreation
*/
EXECsp_trace_setstatus@trace_id,1
/*returnthetraceidentifier*/
SELECTtraceIDis:+CAST(@trace_idASVARCHAR(4))
--Result:
-------------------------
traceIDis:2
如今我们能够用fn_trace_getinfo来取得响应跟踪的信息
SELECT*FROM::fn_trace_getinfo(2)
查询的了局在表3.
表3.fn_trace_getinfo查询的了局.
traceID
Property
Value
2
1
2
2
2
e:        race_file.trc
2
3
5
2
4
NULL
2
5
1

这个输入告知我们,有一个正在运转的跟踪,主动增加到5MB后会主动发生别的一个文件.没有指定跟踪中断工夫(property=4),因而该跟踪会运转直到SQLSERVER服务中断或经由过程体系存储历程sp_trace_setstatus中断跟踪。
DBaaS会导致单一客户利润率的下降,因为云服务一般是依靠MySQL学习教程数来抵消较低的利润率。
若天明 该用户已被删除
沙发
发表于 2015-1-18 18:01:02 | 只看该作者
这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。
蒙在股里 该用户已被删除
板凳
发表于 2015-1-22 19:54:23 | 只看该作者
从项目平台的选择上讲,我们关心的,应该是一款产品能不能满足任务需求,而不是网上怎么说。
乐观 该用户已被删除
地板
发表于 2015-1-31 10:14:21 | 只看该作者
现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
兰色精灵 该用户已被删除
5#
发表于 2015-2-6 18:59:03 | 只看该作者
呵呵,这就是偶想说的
谁可相欹 该用户已被删除
6#
发表于 2015-2-18 08:29:12 | 只看该作者
习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。
深爱那片海 该用户已被删除
7#
发表于 2015-3-6 01:36:48 | 只看该作者
无法深入到数据库系统层面去了解和探究
若相依 该用户已被删除
8#
发表于 2015-3-12 18:29:23 | 只看该作者
可以动态传入参数,省却了动态SQL的拼写。
莫相离 该用户已被删除
9#
发表于 2015-3-20 01:37:40 | 只看该作者
这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 01:55

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表