现在的位置: 首页 > 综合 > 正文

使用SQL Server Profiler监听ArcSDE查询

2013年10月07日 ⁄ 综合 ⁄ 共 2472字 ⁄ 字号 评论关闭

       在ArcSDE中有许多东西都是在数据库中进行的,比如说多次查询、索引等等,在Oracle数据库中我们可以使用跟踪trace文件进行捕捉,但是Oracle毕竟对用户要求比较高,还需要设置很多东西,如果我们想研究ArcSDE的相关东西,我们也可以借助SQLServer数据库,因为它的SQL Server Profiler工具简单好用,同样也可以让我们理解ArcSDE的相关知识。


下面我就以一个没有注册版本的数据,在ArcMap打开要素类,然后进行平移

我们查看SQL Server Profiler工具


 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          依赖于跟踪中捕获的事件类的二进制值。

我们查看这个SQL

exec sp_executesql N'SELECT S_.eminx,S_.eminy,S_.emaxx,S_.emaxy ,SHAPE.fid F_fid,SHAPE.numofpts F_numofpts,SHAPE.entity F_entity,SHAPE.points F_points  FROM (SELECT DISTINCT sp_fid,eminx,eminy,emaxx,emaxy FROM SDE.SDE.s90 SP_  WHERE SP_.gx >= @P1 AND SP_.gx <= @P2 AND SP_.gy >= @P3 AND SP_.gy <= @P4 AND SP_.eminx <= @P5 AND SP_.eminy <= @P6 AND SP_.emaxx >= @P7 AND SP_.emaxy >= @P8 ) S_ , SDE.SDE.f90 SHAPE  WHERE S_.sp_fid = SHAPE.fid ',N'@P1 bigint,@P2 bigint,@P3 bigint,@P4 bigint,@P5 bigint,@P6 bigint,@P7 bigint,@P8 bigint',137400,137405,337772,337778,56336353352,138489202583,56334191079,138486723103

我们转换一下核心的SQL

SELECT S_.eminx,S_.eminy,S_.emaxx,S_.emaxy ,SHAPE.fid F_fid,SHAPE.numofpts F_numofpts,SHAPE.entity F_entity,SHAPE.points F_points  FROM (SELECT DISTINCT sp_fid,eminx,eminy,emaxx,emaxy FROM SDE.SDE.s90 SP_  WHERE SP_.gx >= 137400 AND SP_.gx <= 137405 AND SP_.gy >= 337772 AND SP_.gy <= 337778 AND SP_.eminx <= 56336353352 AND SP_.eminy <= 138489202583 AND SP_.emaxx >= 56334191079 AND SP_.emaxy >= 138486723103 ) S_ , SDE.SDE.f90 SHAPE  WHERE S_.sp_fid = SHAPE.fid

我们可以直接在SQL Server里面执行这个SQL语句

那么我们可以在ArcMap里面看到


我们查看当前视图的属性表


上面关于ArcSDE数据在SQLServer里面的存储,S表结构,索引结构我都没有介绍,有兴趣的大家自己研究一下,这么文章的目的也就是给大家提供一个简单的方法,让想对ArcSDE内部组织,查询,存储等感兴趣的用户研究相关的知识,以达到业务工作的目的。


得到相关trace文件,保存下来,我么可以使用“数据库引擎优化顾问”来分析。

 现在我们来打开数据库引擎优化顾问  我们单击开始--程序--Microsoft SQL Server 2005--性能工具--数据库引擎优化顾问

如下图

和上面一样我们要先输入数据库的登录信息

单击连接进入如下界面

   

           

我们可以看一下界面,一般不用选择只要安默认的就OK了,需要配置的我上面都有注释。在这里大家一定要记得选择用于工作负荷的数据库和表,意思就是设置要分析的数据库否则会分析不成功。

现在就可以单击开始了

在这里我们可以看到分析成功后的分析报告,这还不算,我们单击上面的

建议选项卡

在这里还给出了你的那些表,需要优化,应该怎么建立索引和视图才能更有效的提高性能,更好玩的是连需要优化的Sql语句都给生成好了,

我们直接复制执行就要可以了。

抱歉!评论已关闭.