
如果您定期运行跟踪并且保留所有结果以便进行历史趋势分析 那么通过跟踪捕获的数据的价值将大大增加 但是 存储空间很快会成为约束 我们的主要生产服务器每小时执行 百万个事务 而持续时间为 分钟的跟踪会创建 GB 大小的跟踪文件 我们的系统致力于整理所有数据并且只保存其精华 您可以安排任何服务器的特定跟踪(或者设置循环跟踪) 并且自动加载和处理跟踪文件 正如您上个月所看到的那样 我们的系统从 T SQL 中剔除了不重要的详细信息 从而将事务类型减少到可管理的数量 并且生成和保存了开销最大的事务的报表 在经过几个周的积累之后 这样的报表可以提供对整个服务器或任何特定事务类型进行性能趋势分析的数据 安装 您可以将我们的系统安装在任何已经将服务器连接链接到您希望运行跟踪的所有 SQL Server 的网络 SQL Server 上 因此 为了保存跟踪文件 必须可以从被跟踪的服务器通过网络对该中心服务器的硬盘驱动器进行访问 中心跟踪服务器充当所有跟踪的计划程序 数据处理器 循环报表的发布者 历史数据的储存库以及 DBA 可以生成即席报表和进行性能调查的分析服务器 该设计将对被跟踪的服务器的影响降低至最低程度 并且最大限度降低了由于造成磁盘空间不足或引起处理开销而破坏这些服务器的工作的可能性 您还可以直接在每个被跟踪的服务器上安装和使用该系统 — 只要该服务器具有足够的磁盘空间和处理能力 出于本文的目的 让我们将我们的中心跟踪服务器称为 TRACESQL 并且将我们的被跟踪的服务器称为 PRODSQL 如果您计划使用同一服务器来跟踪其本身 则请用同一名称来替换 TRACESQL 和 PRODSQL 下面介绍如何安装 OpenSQLTrace 如果您打算只跟踪已经安装 OpenSQLTrace 的同一服务器(换句话说 TRACESQL 和 PRODSQL 是同一服务器) 则请跳过步骤 和 配置从 TRACESQL 到 PRODSQL 的链接服务器连接 它必须允许具有启动用来管理服务器端跟踪的系统存储过程的权限 最容易的方法是使用在 PRODSQL 上具有 System Administrator 角色的帐户 但是您显然需要考虑您的特定环境中的安全要求 查明哪个帐户被用来在 PRODSQL 上运行 MSSQLServer 服务 它必须是网络帐户 在 TRACESQL 上选择一个硬盘驱动器分区以用来存储跟踪文件 它必须具有足够的空间 以容纳来自 PRODSQL 的跟踪文件 — 大小很可能为几个 GB 但是 正如别人所说的那样 每个人需要的空间可能有所不同 跟踪文件大小取决于服务器活动 事务混合和跟踪的持续时间 如果 TRACESQL 和 PRODSQL 是不同的服务器 则请在 TRACESQL 上 在您所选的驱动器上创建一个名为 TRACE 的共享文件夹 并且将该共享上的所有权限授予在 PRODSQL 上运行 MSSQLServer 服务的网络帐户 在 TRACESQL 上创建一个名为 Trace 的数据库 分配足够空间以存储多个完整的跟踪文件 另外 还要分配一点儿额外的空间 以存放所保存的报表 将存储在数据库中的跟踪文件的过期时间是可配置的 在我们的环境中 我们只将它们保留一个周 但是我们无限期地保留已编译的摘要报表 以便进行历史趋势分析 下载本文随附的 OpenSQLTrace sql 脚本 并且从 TRACESQL 服务器上的查询分析器中执行它 这会在 Trace 数据库中创建所有需要的对象 并且创建一个每天安排一次的作业以清除过期的跟踪表 (如果您先前已经在同一数据库中安装了该系统 则请注意 该脚本删除并重新创建了所有对象 包括已保存的数据 但未过期的跟踪表除外 ) 如果 TRACESQL 和 PRODSQL 是同一服务器 则改变在上一步中创建的用户定义函数 ufn_Trace_File_Name 更改以下行 return( \\ + rtrim( @@servername ) + \TRACE\ +以使用您在步骤 中创建的 TRACE 文件夹的硬编码路径 确切的路径取决于您的环境 例如 如果您在驱动器 D: 上创建了 TRACE 文件夹 则请按如下方式更改代码 return( D:\TRACE\ + 用法示例 上个月的文章提供了有关提炼跟踪文件和生成摘要报表的存储过程的用法示例 请注意 可下载的新脚本具有 Calculate_Most_Expensive_Transactions 过程的重命名版本 新的名称为 Calculate_Hit_Parade 本月的脚本公开了由以下示例说明的新功能 设置带有摘要处理的一次性无人参与跟踪 为了测试该系统 让我们设置一次性跟踪 从 TRACESQL 上的查询分析器中执行以下过程 Schedule_Trace PRODSQL default 这会在 TRACESQL 上安排一个在两分钟内运行的作业 在 PRODSQL 上启动一个运行一分钟的跟踪 并且将文件保存到 TRACESQL 上的 TRACE 共享中 它还将在 TRACESQL 上安排另一个作业以便在跟踪的估计结束时间之后运行 分钟 将文件加载到 Trace 数据库中的表中 提炼已记录的 T SQL 语句(有关详细信息 请参阅上个月的文章) 生成开销最大的事务的摘要 并且将其保存到 Trace 数据库中的表中 (提示 您可以使用 fn_trace_getinfo() 来监视跟踪进度 )这两个作业在成功完成后都将自动删除它们自身 如果您迫不及待地希望更快地运行该测试 则可以手动启动安排的第一个作业 等待一分钟(跟踪持续时间) 然后手动启动第二个作业 在第二个作业完成后 您便能够在 Trace 数据库的 Hit_Parade_Archive 表中找到已保存的开销最大的事务的报表 并且使用存储过程 Retrieve_Report 来检索它 默认情况下 系统会记录 T SQL 批处理和远程过程调用的完成 如果您希望记录其他跟踪事件 或者更进一步并分别记录在存储过程内部执行的每个查询 则需要通过 @Event_Class_Filter 参数向 Schedule_Trace 提供事件列表 安排每日跟踪 如果您需要每天运行跟踪 则可以如前所述安排一个跟踪(只须指定预期跟踪启动时间而不是默认时间 并且指定预期持续时间而不是一分钟) 然后 手动更改所安排的两个作业(运行跟踪和处理跟踪)的属性 以设置每天执行而不是一次性执行的计划 同时 在 EM 的已安排作业对话框中取消选中 Notifications 选项卡上的 Automatically delete job 选项 以防止作业在完成后删除它们自身(通过 Schedule_Trace 设置的默认行为) 检索和分析摘要报表 要检索任何跟踪的摘要报表 需要知道用来加载数据的跟踪表名称 跟踪表在过期(该参数可配置)时被自动从 TRACE 数据库中删除 但是从它们中提取的报表总是 与原来的表名称相关联 (Trace_Directory 表包含所有已处理的跟踪表的目录 )可以按照服务器名称和跟踪时间查找跟踪表名称 执行以下存储过程以检索一个摘要报表 Retrieve_Report <Trace_Table_Name> 您可以在上个月的文章中查看示例摘要报表 我们通常将这些报表复制并粘贴到 Excel 中(在本月的下载中包含其中一个报表) 在那里可以容易地对数据进行排序和分析 在我们的环境中 我们还创建了一个 DTS 软件包 以便将开销最大的事务的日常报表以电子表格格式自动发布到网络共享 开发人员可以访问该报表 以查看他们的存储过程是如何执行的并且识别瓶颈 [我为作者为开发人员反馈所做的准备以及负责任的态度而喝采 — 编者 ]按聚合类型获得事务的实际源代码 在您识别开销最大的事务类型之后 您就可能希望查看在一个类型下聚合的所有事务的未经提炼的实际 T SQL 代码 为了完成该 下钻 工作 请执行以下存储过程 Report_TSQL_by_ID <Trace_Table_Name> <SQL_Type_ID>其中 <SQL_Type_ID>是从指定为<Trace_Table_Name> 的跟踪表派生的摘要报表中的事务类型的数字 ID 比较两个报表 最有效的分析方法之一是并排比较两个不同的摘要报表 您可能希望比较同一服务器的两个不同跟踪的性能 或者比较具有相同事务混合的两个不同服务器的性能 存储过程 Compare_Reports 采用两个跟踪表(来自 Trace_Directory 表)的名称作为参数 并且比较它们的已保存的报表 对于每个事务类型 它都会显示来自第一个跟踪和第二个跟踪的统计信息以及绝对和相对差异 只有当您在两个报表中跟踪相同的事件类型时 对这两个报表进行比较才会有意义 在我们的环境中 我们在同一时间 同一服务器上使跟踪运行相同的分钟数 从而使逐日比较显得合理 但是 我们可以想到很多分析任务会要求比较两个不同服务器中的跟踪 或者比较在每天的不同时间执行的跟踪 我们将跟踪比较报表复制并保存到 Excel 中 以便进行进一步的分析 它们可以帮助我们回答如下问题 事务混合中发生了哪些可能导致性能下降的更改?哪些事务的处理开销变得更大?同一服务器上的特定存储过程的执行频率或平均持续时间在两个日期之间是如何更改的?摘要报表中出现了哪些新的事务类型?在两个跟踪之间如何比较特定事务类型的 I/O 和 CPU 开销?从所有已保存的报表中检索特定事务类型的历史记录 有时 您可能希望查看特定事务的性能是如何随着时间的推移而变化的(例如 当您调查瓶颈事务 需要分析并且可能需要以图形方式表示响应速度随着时间的推移而发生的下降或提高时) 我们还使用它来验证应用于存储过程的修改是否的确已经改善了它们的性能 我们每天为我们的主要生产服务器运行跟踪并且保存所有报表 经过几个月的收集 该信息使我们可以为我们希望调查的任何 lishixinzhi/Article/program/SQLServer/201311/22044
sqlserver :
单个值可以用 print 变量,执行后在输出窗口可见
结果是一个表直接用 execute 执行存储过程即可
如果你会VS,可以直接用里面的数据库工具跟踪调试
1、自己建立云服务器,服务器上安装数据库中间件和大型数据库;
2、服务器上安装Web服务,建议使用Apache,不要使用IIS,后者稳定性和效率以及安全性都太差了,个人和网站玩玩还行,大规模应用是看不住的;
3、中间件用作向服务器读写和查询,另一端连接web服务进行数据通讯;
4、任何PC、手机等写个小程序,将当前时间、扫描面单的地点等设定进去,然后扫描面单号、将数据传递到服务器中间件,中间件将流水写入数据库,中间件要有重复条码处理功能和错误条码处理功能等,其他的校验在客户端程序完成;
5、根据数据库流水,客户就可以通过网站,查询数据库中针对某个面单,所有的不同地点的扫描时间信息了,也就是说知道物流快递运送进度了,精确到秒,因为扫描的时间精确到秒,复杂些的系统扫描时的那台计算机,还可以连接电子秤,将重量也采集进去,这样那一站发生货物重量缺少,就说明那个环节箱子破了,有东西漏出来丢失了;目前大部分快递公司还做不到这点;
以上系统其实对我们来说,是最低级的系统,仅仅是条码流水采集统计查询而已,唯一不同的是将局域网的东西放到了互联网上,要额外考虑安全、并发连接数、负载均衡、数据库性能、网络稳定性和通讯中断处理机制,很多都要放在中间件中完成。以上所有可以使用免费开源的来实现,也可以使用商业系统实现。
开源免费的可以用:Linxu服务器Mysql数据库Perl语言的CGI开发中间件Apache的Web服务php的查询网页php客户端数据上传网页;
付费的可以使用IBM的服务器套件:Webshare套件DB2数据库,微软的MS-SQLServer就算了,稍大点的快递公司、物流公司,一周的数据就能超过10W个包裹,数据超过10万个,他数据库的性能会比Mysql免费开源数据库还差劲,所以很多人宁可使用性能比他好价格比他低的Oracle数据库也不用他,就是因为查询和读写速度达不到,并且微软的MS-SQLServer很多时候就算你把服务器加到16个CPU,32G内存,20个硬盘,2个千兆网卡,依然性能上不去,此时已经和硬件无关了,是数据库自己能力不足,所以很多大型供应链管理系统不用微软的数据库,是有原因的。
SQLServer创建数据库:
SQLServer创建数据库的方法有两种:一种是通过运行SQL脚本;另一种是直接使用SQLServer管理套件即可创建数据库,在本节中我们使用的是后一种方法。
本教程中建立了一个名为“TaskTracker”的数据库,工具该数据库的名字,我们可以知道它的主要作用是通过它来跟踪任务的,它可以作为一个任务跟踪器应用程序的后端。这样做的好处是可以将该数据库与其他数据库区分,因为一个SQLServer管理套件的数据库是不止一个的。
SQLSever系统数据库
在我们安装SQLServer的时候,会自动创建下面的四个数据库。
master
master数据库记录了所有的SQLServer数据库系统的系统级信息,如用户帐户,配置设置,并在所有其他数据库信息。
model
model数据库是一个模板数据库。每当创建一个新的数据库(包括系统数据库的TempDB),会创建一个以Model数据库为副本数据库,并更改成你创建数据库时所用的名称。
msdb
msdb数据库是SQLServer代理的数据库,用于配置警报使用SQLServer代理和预定作业等。
tempdb
tempddb数据库是由SQLServer用于暂时存储数据的,这其中包含所有临时表,临时存储过程,并通过SQLServer生成任何其他临时存储需求。
开始创建一个新的数据库
下述步骤将展示如何使用SQLServer管理套件在SQLServer2014创建数据库。
在对象资源管理器中,右键单击数据库文件夹/图标,然后选择Newdatabase:
如果不将跟踪结果保存到文件或表中,则当
sql
server
profiler打开时可以查看跟踪。但是,在停止跟踪并关闭
sql
server
profiler之后会丢失跟踪结果。为了避免这种丢失跟踪结果的情况,可以在关闭
sql
server
profiler之前单击“文件”菜单上的“保存”来保存结果。
sp_prepexec结合了 sp_prepare 和 sp_execute 的功能
sp_prepare准备参数化的 Transact-SQL 语句并返回用于执行的语句“句柄”。
sp_execute执行这个“句柄”
可以认为是前台应用程序的参数化执行语句在数据库内部的一个呈现
以上就是关于OpenSQLTrace:自动跟踪处理和分析系统全部的内容,包括:OpenSQLTrace:自动跟踪处理和分析系统、如何用PLSQL Developer跟踪前台程序调用的表及存储过程等、物流公司网站的货物跟踪系统怎么做的,如何编程_物流运输跟踪等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)