1、用户需求
数据库技术的发展,呈现出了两个显著的发展趋势。一方面,数据库任务的管理和操作愈来愈自动化、智能化,许多以前需要手工完成的操作和配置等数据库管理工作现在都可以使用图形界面工具和向导来完成,大大减轻了用户在数据库管理中的工作量,使用户有更多的时间和精力把自己的工作做的更好。另一方面,对于那些难以实现或者没有必要实现自动化的操作,例如某些复杂的数据库检索等工作,则尽可能地集中在同样的图形化界面中来完成。这样,在同一个窗口中,用户可以完成更多的不同类型的操作,并且从该窗口中可以得到更多的有价值的信息,可以显著地减轻用户在不同窗口界面之间的转换和查询相关信息的工作量。
最新的关系型数据库管理系统SQL Server 7.0充分体现了这种发展趋势。与以前的版本相比,SQL Server的新版本有了许多改进,例如自动的配置、新的数据库引擎、增加了许多向导等。另外一方面,在查询处理器中,体现出了集中管理和操作的趋势。在处理器中,不单可以完成普通的Transact-SQL语句的操作,还可以完成图形化的执行规划的优化工作。在该处理器中,使用了新的查询规划算法,可以大大提高查询语句的执行速度,提高了系统的性能。
2、特性概述
查询处理器是一种可以完成许多工作的多用途的工具。在查询处理器中,可以交互式地输入和执行各种Transact-SQL语句,并且在一个窗口中可以同时查看Transact-SQL语句和其结果集;可以在查询处理器中同时执行多个Transact-SQL语句,也可以执行脚本文件中的部分语句;提供了一种图形化分析查询语句执行规划的方法,可以报告由查询处理器选择的数据检索方法,并且可以根据查询规划调整查询查询语句的执行,提出执行可以提高性能的优化的索引建议。
具体地说,查询处理器有以下的特点和优点:
彩色代码编辑器
可以交互式地执行各种Transact-SQL语句
多查询窗口,每一个查询窗口都有自己的连接
可以定制选择结果集的查看方式
支持上下文敏感的帮助系统
可以选择执行脚本文件中的全部内容或者部分内容
图形化地显示执行规划,可以分析执行规划并且提出建议
支持根据执行规划优化的可以提高性能的索引
支持新的查询规划算法,改进了的成本模型和规划选择模型,加快查询进程的速度
支持新的散列连接连接和和合并连接算法,可以使用多索引操作
支持单个查询语句在多个处理器上的并行执行
支持使用OLE DB的分布式的和多机种环境的查询
3、交互式操作
在数据库管理系统中,虽然数据库技术有了很大的发展,提供了许多工具和向导,但是仍然有许多管理和操作不能依靠图形界面来完成,还必须使用交互式命令来执行。1970年E. F. Code发表了题为“大型共享数据库的数据关系模型”以来,确立了结构化查询语言(SQL)在关系数据库中的重要地位。目前,许多关系型数据库供应商都在自己的数据库中采用了SQL语言。当前,最新的SQL语言是ANSI SQL-92。
Transact-SQL语句是微软在SQL Server数据库中的ANSI SQL-92的实现。在SQL Server数据库中,Transact-SQL语句由四个部分组成。第一部分是数据控制语言(DCL)语句,用来进行性管理,可以确定哪些用户可以查看或者修改数据,这些语句包括GRANT、DENY、REVOKE等语句。第二部分是数据定义语言(DDL)语句,用来执行数据库的任务,创建数据库以及数据库中的各种对象,这些语句包括CREATE、ALTER、DROP等语句。第三部分是数据操纵语言(DML)语句,用来在数据库中操纵各种对象,检索和修改数据,这些语句包括SELECT、INSERT、UPDATE、DELETE等。第四部分不是ANSI SQL-92的内容,而是Transact-SQL语句的附加的语言元素,这些语言元素包括变量、运算符、函数、流程控制语言和注释。
这些Transact-SQL语句都可以在查询处理器中交互式执行。在这个查询处理器中,使用了彩色代码元素编辑器。这样,在该处理器中写查询语句时,SQL Server系统自动将该查询语句中的关键字等SQL语言元素使用不同的颜色标示出来,可以醒目地检查这些语句的语法是否正确。另外,这种着重显示的颜色,用户也可以根据自己的需要进行定制。
对于查询语句的结果集,可以选择不同的显示方式。既可以使用象以前版本中的那种表格形式显示结果集,也可以选择使用网格形式来显示结果集。如果使用网格形式来显示结果集,那么用户完全可以象使用表一样操纵这些结果集中的内容。这些查询语句和结果集可以根据需要,在脚本文件中。
查询处理器提供了多个查询窗口。这些同时打开的查询窗口,都是分别表示一个线程,即分别对应一个用户连接。因此,在这些查询窗口中,窗口都是互相独立的,窗口中的内容都是独立执行的。另外,当打开多个查询窗口时,由于每一个查询窗口对应一个用户连接,并且每一个用户连接都要占用一定数量的系统资源,因此,打开的查询窗口愈多,占用的系统资源也愈多。
可以在查询处理器中执行脚本文件中的内容。脚本文件是存放许多Transact-SQL语句的操作系统文件。在查询处理器中,既可以执行该脚本文件中的全部Transact-SQL语句内容,也可以根据需要选择一部分Transact-SQL语句来执行。
在这个查询处理器中,支持新的查询规划算法,改进了的成本模型和规划选择模型,可以大大加快对庞大数据库查询进程的速度。还支持新的散列连接连接和和合并连接算法,可以使用多索引操作,也可以提高查询性能。
4、执行规划
执行规划的概念
可以使用查询处理器来为将要执行的查询语句构造一个执行规划。执行规划就是一系列的产生查询语句所要求结果的步骤。现在举一个例子说明什么是执行规划。例如:
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 7.0中,查询处理器可以提供某一个语句的执行规划的图形化表示。在查询处理器中,每一个图标表示执行规划中的一个步骤。可以在图标之间移动光标,
【责编:admin】
--------------------next---------------------