用户需求
数据库技术的发展呈现出了两个显着的发展趋势一方面数据库任务的管理和操作愈来愈自动化智能化许多以前需要手工完成的操作和配置等数据库管理工作现在都可以使用图形界面工具和向导来完成大大减轻了用户在数据库管理中的工作量使用户有更多的时间和精力把自己的工作做的更好另一方面对于那些难以实现或者没有必要实现自动化的操作例如某些复杂的数据库检索等工作则尽可能地集中在同样的图形化界面中来完成这样在同一个窗口中用户可以完成更多的不同类型的操作并且从该窗口中可以得到更多的有价值的信息可以显着地减轻用户在不同窗口界面之间的转换和查询相关信息的工作量
最新的关系型数据库管理系统SQL Server 充分体现了这种发展趋势与以前的版本相比SQL Server的新版本有了许多改进例如自动的服务器配置新的数据库存储引擎增加了许多向导等另外一方面在查询处理器中体现出了集中管理和操作的趋势在处理器中不单可以完成普通的TransactSQL语句的操作还可以完成图形化的执行规划的优化工作在该处理器中使用了新的查询规划算法可以大大提高查询语句的执行速度提高了系统的性能
特性概述
查询处理器是一种可以完成许多工作的多用途的工具在查询处理器中可以交互式地输入和执行各种TransactSQL语句并且在一个窗口中可以同时查看TransactSQL语句和其结果集可以在查询处理器中同时执行多个TransactSQL语句也可以执行脚本文件中的部分语句提供了一种图形化分析查询语句执行规划的方法可以报告由查询处理器选择的数据检索方法并且可以根据查询规划调整查询查询语句的执行提出执行可以提高性能的优化的索引建议
具体地说查询处理器有以下的特点和优点
彩色代码编辑器
可以交互式地执行各种TransactSQL语句
多查询窗口每一个查询窗口都有自己的连接
可以定制选择结果集的查看方式
支持上下文敏感的帮助系统
可以选择执行脚本文件中的全部内容或者部分内容
图形化地显示执行规划可以分析执行规划并且提出建议
支持根据执行规划优化的可以提高性能的索引
支持新的查询规划算法改进了的成本模型和规划选择模型加快查询进程的速度
支持新的散列连接连接和和合并连接算法可以使用多索引操作
支持单个查询语句在多个处理器上的并行执行
支持使用OLE DB的分布式的和多机种环境的查询
交互式操作
在数据库管理系统中虽然数据库技术有了很大的发展提供了许多工具和向导但是仍然有许多管理和操作不能依靠图形界面来完成还必须使用交互式命令来执行年E F Code发表了题为大型共享数据库的数据关系模型以来确立了结构化查询语言(SQL)在关系数据库中的重要地位目前许多关系型数据库供应商都在自己的数据库中采用了SQL语言当前最新的SQL语言是ANSI SQL
TransactSQL语句是微软在SQL Server数据库中的ANSI SQL的实现在SQL Server数据库中TransactSQL语句由四个部分组成第一部分是数据控制语言(DCL)语句用来进行安全性管理可以确定哪些用户可以查看或者修改数据这些语句包括GRANTDENYREVOKE等语句第二部分是数据定义语言(DDL)语句用来执行数据库的任务创建数据库以及数据库中的各种对象这些语句包括CREATEALTERDROP等语句第三部分是数据操纵语言(DML)语句用来在数据库中操纵各种对象检索和修改数据这些语句包括SELECTINSERTUPDATEDELETE等第四部分不是ANSI SQL的内容而是TransactSQL语句的附加的语言元素这些语言元素包括变量运算符函数流程控制语言和注释
这些TransactSQL语句都可以在查询处理器中交互式执行在这个查询处理器中使用了彩色代码元素编辑器这样在该处理器中写查询语句时SQL Server系统自动将该查询语句中的关键字等SQL语言元素使用不同的颜色标示出来可以醒目地检查这些语句的语法是否正确另外这种着重显示的颜色用户也可以根据自己的需要进行定制
对于查询语句的结果集可以选择不同的显示方式既可以使用象以前版本中的那种表格形式显示结果集也可以选择使用网格形式来显示结果集如果使用网格形式来显示结果集那么用户完全可以象使用表一样操纵这些结果集中的内容这些查询语句和结果集可以根据需要存储在脚本文件中
查询处理器提供了多个查询窗口这些同时打开的查询窗口都是分别表示一个线程即分别对应一个用户连接因此在这些查询窗口中窗口都是互相独立的窗口中的内容都是独立执行的另外当打开多个查询窗口时由于每一个查询窗口对应一个用户连接并且每一个用户连接都要占用一定数量的系统资源因此打开的查询窗口愈多占用的系统资源也愈多
可以在查询处理器中执行脚本文件中的内容脚本文件是存放许多TransactSQL语句的操作系统文件在查询处理器中既可以执行该脚本文件中的全部TransactSQL语句内容也可以根据需要选择一部分TransactSQL语句来执行
在这个查询处理器中支持新的查询规划算法改进了的成本模型和规划选择模型可以大大加快对庞大数据库查询进程的速度还支持新的散列连接连接和和合并连接算法可以使用多索引操作也可以提高查询性能
执行规划
执行规划的概念
可以使用查询处理器来为将要执行的查询语句构造一个执行规划执行规划就是一系列的产生查询语句所要求结果的步骤现在举一个例子说明什么是执行规划例如
Select * From customer Order By custid
在上面这个查询语句中表示从表customer中检索出全部的内容并且根据列custid进行排序一般情况下该查询语句可能会产生下面的执行规划步骤
第一步扫描表customer主键的聚簇索引
第二步根据列custid对在第一步中得到的查询结果进行排序
第三步把在第二步中得到的结果返回给应用程序
查询处理器使用存储在数据库表中的有关统计信息来确定选用的产生最终结果的最有效的方法这种方法该查询语句的执行规划
如何访问数据库中的数据
为了能更好地理解查询语句的执行规划看一看查询语句是如何访问数据库中的数据的一般地系统访问数据库中的数据可以使用两种方法第一种方法是表扫描就是指系统将指针放置在该表的表头数据所在的数据页上然后按照数据页的排列顺序一页一页地从前向后扫描该表数据所占有的全部数据页直至扫描完表中的全部记录在扫描时如果找到符合查询条件的记录那么就将这条记录挑选出来最后将全部挑选出来符合查询语句条件的记录显示出来第二种方法是使用索引查找索引是一种树状结构其中存储了关键字和指向包含关键字所在记录的数据页的指针当使用索引查找时系统沿着索引的树状结构根据索引中关键字和指针找到符合查询条件的的记录最后将全部查找到的符合查询语句条件的记录显示出来
在SQL Server中当访问数据库中的数据时由SQL Server确定该表中是否有索引存在如果没有索引那么SQL Server使用表扫描的方法访问数据库中的数据那么查询处理器根据分布的统计信息生成该查询语句的优化执行规划以提高访问数据的效率为目标确定是使用表扫描还是使用索引
统计信息
系统为每一个索引创建一个分布页统计信息就是指存储在分布页上的某一个表中的一个或者多个索引的关键值的分布信息当执行查询语句时为了提高查询速度和性能系统可以使用这些分布信息来确定使用表的哪一个索引查询处理器就是依赖于这些分布的统计信息来生成查询语句的执行规划执行规划的优化程度依赖于这些分布统计信息的准确步骤的高低程度如果这些分布的统计信息与索引的物理信息非常一致那么查询处理器可以生成优化程度很高的执行规划相反如果这些统计信息与索引的实际存储的信息相差比较大那么查询处理器生成的执行规划的优化程度则比较低
一般地分布的统计信息与索引的实际存储的信息是比较一致的但是当对某一个表有大量的数据操作时特别是在被索引的列上有大量的数据被增加修改或者删除那么索引的实际存储信息就发生了比较大的变化这时索引中关键字的分布统计信息就与实际情况有大的差别因此为了提高关键字的分布统计信息的准确程度当表中的数据有比较大的操作变化时应该针对表中的全部索引或者一个索引执行UPDATE STATISTICS语句这样系统重新计算关键字的分布统计信息提高执行规划的优化程度和访问数据的效率
图形化的执行规划
查询处理器从统计信息中提取索引关键字的分布信息除了用户可以手工执行UPDATE STATISTICS之外查询处理器还可以自动收集统计这些分布信息这样就能够充分保证查询处理器使用最新的统计信息保证执行规划具有很高的优化程度减少了维护的需要
在以前的SQL Server中使用SHOWPLAN方法允许用户查看某一个特定语句的处理器所创建的执行规划用户可以根据这些信息来确定如何提高该查询语句的性能例如修改查询语句的结构增加另外的数据库索引在SQL Server 中查询处理器可以提供某一个语句的执行规划的图形化表示在查询处理器中每一个图标表示执行规划中的一个步骤可以在图标之间移动光标