Server作为一款面向企业级应用的关系数据库产品.docx
《Server作为一款面向企业级应用的关系数据库产品.docx》由会员分享,可在线阅读,更多相关《Server作为一款面向企业级应用的关系数据库产品.docx(20页珍藏版)》请在三一办公上搜索。
1、第1章 SQL Server 2008概述第1章 SQL Server 2008概述SQL Server作为一款面向企业级应用的关系数据库产品,在各行业和各软件产品中得到了广泛的应用,尤其是SQL Server 2008的发布使得SQL Server无论在效率上还是功能上较SQL Server 2000都得到了很大的改善和提高。本章将主要讲解SQL Server 2008的基础知识及其安装和使用方法。1.1 SQL Server 2008简介 本节将主要介绍SQL Server的发展历史和特点,通过对数据库发展历史和SQL Server发展历史的了解,使读者更好地确定学习的目标。1.1.1 S
2、QL Server发展历史1946年世界上第一台计算机“ENIAC”的诞生标志着人类进入了计算机时代。使用计算机中所必须面临的一个问题就是资料的存储。早期的计算机是将信息通过打孔的方式存储在纸带上,但是这种存储在纸带上的信息既不容易检索也不容易修改。后来随着磁存储介质的发明,信息才以文本文件或二进制文件的形式存储。这种以单独的文件来存放信息就叫做文件处理系统(file-processing system)。不同的信息被存放到不同的文件和不同的路径下,人们编写不同的应用程序来记录和处理需要的文件。文件处理系统的主要缺点有:q 无数据格式标准。由于文件和程序是在比较长的一段时间由不同的程序员编写的
3、,而文件中并没有统一的格式来标注文件中的信息内容,容易造成对数据的理解不一致。比如一个学生管理系统,a文件中记录了a学生选修的5门课程的成绩,b文件记录的是b学生选修的7门课程的成绩。由于a和b选修的课程不同造成文件中的记录含义不同。由于没有统一的格式标准,大量的这种文件放在一起必然造成程序处理的困难。q 数据冗余。采用文件存储的方式,由于缺乏唯一性检查容易造成相同的信息在几个文件中重复存储。这种存储不但使得文件访问的开销增大,还会导致数据的不一致。q 数据检索困难。由于文件系统中没有索引,若要检索出文件内容中的某行数据,程序就必须打开所有文件,找出其中符合条件的数据。还以前面提到的学生管理系
4、统为例,若要找出英语分数最高的同学,程序必须打开每一个学生成绩的文件找到其中的英语成绩才能最终找到结果。对于几万或是几十万个文件,若要遍历每一个文件,其处理效率可想而知。传统的文件处理系统不支持以一种方便而高效的方式去获取所需数据。而随着计算机的普及,需要处理的数据不断膨胀,在面对几百万条、几千万条的情况下,文件处理系统已经无能为力。而且随着处理业务的不断复杂化,数据完整性问题、原子性问题、并发操作问题、数据安全问题等更使文件处理系统捉襟见肘。在这种情况下数据库管理系统(database management system,DBMS)应运而生。早期的数据库还是以数据存储和数据检索为主,使用网状
5、数据模型和层次数据模型来描述数据、数据联系、数据定义和数据一致性约束。1970年,美国IBM(主要产品DB2)公司的E.F.Codd发表的著名论文A Relational Model of Data for Large Shared Data Banks中首先提出了关系数据模型。后来Codd又提出了关系代数和关系演算的概念、函数依赖的概念、关系的三范式,为关系数据库系统奠定了理论基础。接着各大数据库厂商都推出了支持关系模型的数据库管理系统,标志着关系数据库系统新时代的来临。随着关系数据库系统时代的到来,各大数据库厂商都开始推出自己的关系数据库产品。1989年Sybase和Ashton-Tate
6、公司(以其dBase软件成为当时数据库市场的霸主,1991年被Borland并购)合作开发了数据库产品SQL Server 1.0。而Microsoft为了能在关系数据库市场和甲骨文公司(主要产品Oracle)以及IBM相抗衡,其在1992年劝说Sybase公司进行5年的合作,共同研发数据库产品。并在之后推出了应用于Windows NT 3.1平台上的Microsoft SQL Server 4.21版本,从此标志着Microsoft SQL Server的正式诞生。20世纪90年代,数据库市场百花齐放,竞争十分激烈。SQL Server的早期版本由于其自身的不足,仅局限在小型企业和个人应用上
7、。直到1998年SQL Server 7.0的推出才使SQL Server走向了企业级应用的道路。而随后发布的SQL Server 2000更是一款优秀的数据库产品,凭借其优秀的数据处理能力和简单易用的操作使得SQL Server跻身世界三大数据库之列(另外两个是Oracle和IBM DB2)。如表1.1给出了SQL Server各版本的发布时间和开发代号。表1.1 SQL Server各版本发布时间和开发代号年 代版 本开 发 代 号1993年SQL Server for Windows NT 4.21无1994年SQL Server for Windows NT 4.21a无1995年SQ
8、L Server 6.0SQL 951996年SQL Server 6.5Hydra1998年SQL Server 7.0Sphinx2000年SQL Server 2000Shiloh2003年SQL Server 2000 Enterprise 64位版Liberty2005年SQL Server 2005Yukon2008年SQL Server 2008Katmai虽然微软凭借着SQL Server 2000成为世界数据库三巨头之一,但是与Oracle和IBM的DB2相比,SQL Server 2000在数据处理效率、系统功能和市场占有率上仍有比较大的差距。到2004年,据IDC统计,O
9、racle的市场占有率为41.3%,而IBM和微软的市场份额则分别为30.6%和13.4%。自从2000年微软发布SQL Server 2000以后,5年来一直没有对SQL Server进行大的版本升级。2005年SQL Server 2005的发布可谓是微软在数据库市场投放的重磅炸弹,SQL Server 2005不愧为微软“十年磨一剑”的精品之作。其高效的数据处理、强大的功能、简易而统一的界面操作,以及诱人的价格立即受到众多软件厂商和企业的青睐。SQL Server的市场占有率不断增大,微软和Oracle、IBM又站在了同一起跑线上。3年后,SQL Server 2008在原有SQL Se
10、rver 2005的架构上做了进一步的更改。除了继承SQL Server 2005的优点以外,还提供了更多的新特性、新功能,使得SQL Server上升到新的高度。1.1.2 SQL Server 2008的特点SQL Server自从6.0版脱离Sybase架构后,每一个重大版本的发布都引入了新的特性和功能。q SQL Server 7.0使用了全新的关系引擎和查询引擎设计,并率先在数据库管理系统中引入OLAP和ETL。这标志着SQL Server进入商务智能(BI)领域。q SQL Server 2000使得总体性能提高了47%,同时增加了其扩展性和对XML的支持。另外SQL Server
11、 2000还率先引入了通知服务、数据挖掘、报表服务等。q SQL Server 2005在性能上较SQL Server 2000有了更进一步的提高。在企业级数据管理平台方面的高可用性设计和全新的安全设计也特别引人注目。在商务智能数据分析平台上,SQL Server 2005增强了OLAP分析引擎、企业级的ETL和数据挖掘能力。同时其还实现了与Office集成的报表工具。另外在数据应用开发平台上,SQL Server 2005实现了与.NET的集成、Web Service集成、Native XML支持以及Service Broker等。q SQL Server 2008除了在SQL Server
12、 2005的基础上优化查询性能外,还提供了新的数据类型、支持地理空间数据库、增加T-SQL语法、改进了ETL和数据挖掘方面的能力。当然,作为微软在数据库市场的主打产品SQL Server 2005的升级版,SQL Server 2008的特性不仅仅如此。微软官方网站给出了SQL Server 2008的关键功能列表,以供读者 参考。总体来说,SQL Server正朝着更高的性能,更可靠更安全的方向发展,并提供商务智能的集成,成为了集数据管理和分析于一体的企业级数据平台。1.2 SQL Server 2008架构简介本节主要介绍SQL Server 2008的系统架构、数据存储方式、读写方式以及
13、SQL程序的运行方式。读者只有对系统架构有了一个基本的认识,才能对更好地学习和理解SQL Server 2008的相关知识。1.2.1 SQL Server 2008系统架构SQL Server 2008功能模块众多,但是从总体来说可以将其分成两大模块:数据库模块和商务智能模块。数据库模块除了数据库引擎以外,还包括以数据库引擎为核心的Service Broker、复制、全文搜索等功能组件。而商务智能模块由集成服务(Integration Services)、分析服务(Analysis Services)和报表服务(Reporting Services)3大组件组成。各组件之间的关系如图1.1所
14、示。图1.1 SQL Server 2008组件之间的关系从图中可以看出,数据库引擎是整个SQL Server 2008的核心所在,其他所有组件都与其有着密不可分的联系。由于数据库引擎的重要性,笔者在此就主要讲解一下数据库引擎的内部架构。如图1.2显示了SQL Server 2008的总体结构。SQL Server数据库引擎有4大组件:协议(Protocol)、关系引擎(Relational Engine,查询处理器,即Query Compilation和Execution Engine)、存储引擎(Storage Engine)和SQLOS。任何客户端提交的SQL命令都要和这4个组件进行交互
15、。图1.2 SQL Server 2008架构协议层接受客户端发送的请求并将其转换为关系引擎能够识别的形式。同时它也能将查询结果、状态信息和错误信息等从关系引擎中获取出来,然后将这些结果转换为客户端能够理解的形式返回给客户端。关系引擎负责处理协议层传来的SQL命令,对SQL命令进行解析、编译和优化。如果关系引擎检测到SQL命令需要数据就会向存储引擎发送数据请求命令。存储引擎在收到关系引擎的数据请求命令后负责数据的访问,包括事务、锁、文件和缓存的管理。SQLOS层则被认为是数据库内部的操作系统,它负责缓冲池和内存管理、线程管理、死锁检测、同步单元和计划调度等。1.2.2 SQL Server 2
16、008的协议当客户端向SQL Server发送SQL命令时,客户端发出的命令必须符合一定的通信格式规范才能被数据库系统识别,而这个规范就是TDS(Tabular Data Stream)。服务器和客户端上都有Net-Libraries,它可以将TDS信息包转换为标准的通信协议包。SQL Server可以同时支持来自不同客户端的多种标准协议,其支持的协议有:q 共享内存(Shared Memory)。这是SQL Server默认开启的一个协议。该协议简单,无须配置。顾名思义,共享内存协议就是通过客户端和服务端共享内存的方式来进行通信。所以使用该协议的客户端必须和服务端在同一台机器上。由于共享内存
17、协议简单,协议效率高而且安全,所以如果客户端(比如IIS)和数据库是在同一台机器上,那么使用共享内存协议是一个不错的选择。q 命名管道(Named Pipes)。该协议是为局域网而开发的协议。命名管道协议和Linux下的管道符号有点接近,一个进程使用一部分内存来向另一个进程传递信息,一个进程的输出是另一个进程的输入。两个进程可以是同一台机器,也可以是局域网中的两台机器。q TCP/IP。该协议是因特网上广为使用的协议。该协议可以用于不同硬件、不同操作系统、不同地域的计算机之间通信。由于TCP/IP协议没有共享内存协议和命名管道协议的限制,所以该协议在SQL Server上被大量使用。q 虚拟接
18、口适配器(VIA)。该协议是一种和VIA硬件一起使用的专门化协议。相关细节需要从硬件供应商处获得。1.2.3 SQL Server 2008的查询查询处理器由解析器、优化器、SQL管理器、数据库管理器和查询执行器组成。它主要负责SQL命令处理。查询处理器是整个SQL Server中最为复杂的组件,其性能的好坏就决定了整个SQL Server数据处理能力的高低。当一个SQL命令从协议层传输到查询处理器时,各模块的分工如下:q 命令解析器首先接收到协议层传来的T-SQL语句。命令解析器首先对T-SQL语法进行检查。如果解析器无法正确识别语法,则直接抛出错误并标出错误的地方。在语法检查通过后命令解析
19、器会将SQL命令翻译成查询树,并将查询树传给查询优化器。至此命令解析器的任务结束,而源SQL命令也将不再可用。q 查询优化器负责查询树的执行优化并生成最终的执行计划。查询优化器从命令解析器中获得查询树后,将不能优化的控制流DDL命令等编译成一种内部格式,而可以优化的DML语句(如select、insert、update和delete)将由查询优化器进一步判断最佳的处理方式。对于可优化语句,查询优化器先将每个查询进行规范化,然后基于成本选择成本最低的执行计划。执行成本以内存使用量、CPU使用率和I/O数量为依据。查询优化器会考虑语句的类型并检查受影响的各个表的数据量,查询每张表中可用的索引和统计
20、信息来决定最优的执行计划。在规范化和优化完成后,查询树会被编译成执行计划。执行计划实际上是一种数据结构,其中包含了每个命令将会影响的表,会使用的索引,进行安全检查和必须判断为真的选择条件。q SQL管理器负责管理与存储过程(Storage Process,简称SP)执行计划有关的一切事务。SQL管理器会判断什么时候一个执行计划需要重新编译并管理存储过程缓存以便其他进程重用这些缓存。另外,SQL管理器还负责管理查询的参数自动化,也就是说SQL管理器可以从某些SQL命令中提取出参数,而将参数形式的SQL命令的执行计划缓存起来,从而提高SQL语句查询的效率。q 数据库管理器管理查询编译和查询优化所需
21、的对元数据的访问。q 查询执行器运行查询优化器生成的执行计划。该模块逐步运行执行计划中的每一个命令,管理其中的事务和锁,并将需要数据操作的执行计划传入存储引擎。如图1.3所示为SQL Server 2008的查询流程图。图1.3 查询过程1.2.4 SQL Server 2008的数据操作SQL Server 2008的数据操作主要由存储引擎来完成。当查询处理器向存储引擎发出数据操作请求时,存储引擎会调用存取方法的代码向缓存管理器发出请求,缓存管理器负责从缓存中提供数据或者从硬盘上把数据读取到缓存中,下次再查询该数据时查询处理器就可以直接从缓存中读取数据,而不需要进行硬盘的I/O操作。如图1.
22、4形象地表示了数据的读取方式。由于内存的访问速度远远高于硬盘的访问速度,这种缓存读取的方式尽量减少了硬盘的读写操作,从而大大提高了数据处理效率。SQL Server在数据访问中的最小单位是页(Page)。也就是说,即使只需要查询一个字节的数据,SQL Server至少也要访问1个页来查找结果。每个数据库都是由页组成的集合。1个页的大小是8KB,而8个连续的页组成了1个区(Extent)。SQL Server中使用了8种类型的页:数据页、LOB(大数据类型)页、索引页、页面自由空间页(PFS)、全局分配图和共享全局分配图页(GAM和SGAM)、索引分配图(IAM)页、大批量修改图(BCM)页和增
23、量修改图(DCM)页。虽然每个页的大小是8KB,但是SQL Server中规定表中行(不包括可变长度数据类型的列)的最大长度是8060字节。所有的用户数据都保存在数据页或大型数据页上,所有的索引行都保存在索引页上。PFS页用来跟踪数据库中哪些页是空的,可以用来记录新数据。分配页(GAM、SGAM和IAM)用来跟踪其他页面,不含任何用户数据并且只能在内部使用。大批量修改图页和增量修改图页用来使数据库备份和恢复效率更高。如图1.4展示的是数据的读取方式,但是对于数据的写入,SQL Server的处理方式有一定的不同。为了保证事务的原子性一个事务要么全部做完,要么什么都不做,但数据库必须要实现事务的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Server 作为 一款 面向 企业级 应用 关系 数据库 产品

链接地址:https://www.31ppt.com/p-1846175.html