WEB开发网
开发学院数据库MSSQL Server 浅谈SQLSERVER2000T-SQL的运行 阅读

浅谈SQLSERVER2000T-SQL的运行

 2007-11-11 04:36:45 来源:WEB开发网   
核心提示:·MySQL(和PHP搭配之最佳组合)和SQLServer比较·用ASP调用SQLServer的视图和存储过程·最近一段时间都在弄sybase和ms-sqlser·在SQLserver中出现指定的服务并未以已·.Net下调用SQLServer2000
    ·MySQL(和PHP搭配之最佳组合)和SQLServer比较
    ·用ASP调用SQLServer的视图和存储过程
    ·最近一段时间都在弄sybase和ms-sqlser
    ·在SQLserver中出现指定的服务并未以已
    ·.Net下调用SQLServer2000中存储过程
    ·SQLServer对select语句返回多条记录给
    ·ASP.NET如何存取 SQLServer数据库图片
    ·.Net 下对SqlServer2000中的存储过程
    ·jsp(SUN企业级应用的首选)中tomcat(一个很好用的JSP运行平台)的SQLServer2000数据库连
    ·SQLServer和Access、Excel数据传输简
  T-SQL(Trantsact-SQL)是微软公司在SYBASE的基础上发展起来的一种结构化查询语言,是应用程序和存储过程与sql server(WINDOWS平台上强大的数据库平台)通讯和访问的工具.包涵了ANSI89和ANSI92标准.所以T-SQL不是一种标准的编程语言,它必须通过sql server(WINDOWS平台上强大的数据库平台)的数据引擎来分析和运行,sql server(WINDOWS平台上强大的数据库平台)是如何编译和运行T-SQL语句呢? 

  sql server(WINDOWS平台上强大的数据库平台)在处理任何T-SQL语句时都经过下面三个步骤: 

  1. 解析T-SQL语句 

  2. 编译T-SQL语句 

  3. 执行T-SQL语句  

  当一个T-SQL的批处理提交到sql server(WINDOWS平台上强大的数据库平台)服务器,服务器回将这个T-SQL批处理作为一个整体进行分析,在优化,编译,最后在分步执行.

  一. 解析  

  所谓”解析”是指sql server(WINDOWS平台上强大的数据库平台)命令解析模块首先检查T-SQL批处理语法的过程,如果没有找到错误,命令解析器将源代码细分为多个逻辑单元,比如:关键字,标识符以及运算符.然后命令解析器会构建一个内部结构,最后通过这个内部结构生成DDL操作或DDM操作所需要的详细的步骤.如果该T-SQL批处理包涵一个查询,那么这个内部结构被成为查询树(QUERY TREE),如果该T-SQL批处理是一个过程,那么这个内部查询被成为顺序树(SEQUENCE TREE).

  
请添加描述
 

  图一:sql server(WINDOWS平台上强大的数据库平台)的关系引擎部分  

  大家可以看出在图一的左边,主要是T-SQL的解析,编译和查询优化(Query Optimizer).这是sql server(WINDOWS平台上强大的数据库平台)运行T-SQL非常关键的部分.在图的右边是执行组件,当T-SQL语句编译过后就会直接传给执行结构进行运行.在中间的部分是SQL管理器,控制整个T-SQL批处理的解析,编译和执行. SQL Message 是从客户端接受的(TDS)数据.Express Services Libary是进行数据转换,过虑数据和进行计算和统计,同时也会格式化输出的数据.   

  二.编译  

   这一步主要是将顺序树(SEQUENCE TREE)生成为一个执行规划, 查询优化器(Query Optimizer)主要是对T-SQL语句所要检索的资源进行评估,生成I/O的时间,过虑时间和其他逻辑处理的时间.然后查询优化器(Query Optimizer)是试图利用一个最小资源的方案.  

  这个方案中还包括执行是需要的任务列表(比如:安全检查,约束检查,触发器检查等等).这个就被成为执行规划  

  三.执行  

   执行组件根据执行规划在高速缓存中运行并滞留,执行规划的不同步骤将被发送到关系引擎的不同组件进行处理:DML管理器,DDL管理器,存储过程管理器,事务处理管理器和实用工具管理器.处理结果将以结果集的方式被收集合并返回调用者.  

  执行规划将在高速缓存中被保留一段时间,如果同一用户或其他用户发出类似请求的T-SQL批处理,关系数据引擎将会优先在高速缓存中寻找匹配的执行规划.如果该执行规划存在就采用运行,如果不存在,sql server(WINDOWS平台上强大的数据库平台) 就会解析并编译这个T-SQL批处理.  

  如果sql server(WINDOWS平台上强大的数据库平台)需要的内存不够,它会从内存中删除一些执行规划.sql server(WINDOWS平台上强大的数据库平台)有一个很好的”老化”算法,它可以统计某个执行规划的使用时间和次数.如果内存足够的大,也可以无限的增加执行规划到内存中.  

  

1 2  下一页

Tags:SQLSERVER SQL 运行

编辑录入:coldstar [复制链接] [打 印]
赞助商链接