保存评价游戏规则免费注册资料下载关于本站问题分类编程问题非技术题富翁列表我的信息提出问题在线富翁富翁日历笔记列表我的笔记写作笔记全文检索《专家门诊》富翁名称富翁密码进入论坛请记住我富翁名称发送密码免费注册大富翁论坛版权所有KeyLife富翁笔记作者:soul标题:SQLServer体系结构的工作原理关键字:分类:数据库-C/S型密级:公开(评分:★★★,回复:2,阅读:2078)»»数据库体系结构:存储引擎2002-03-2515:30:00·CathanCook·RealSKy摘要:本文深入探讨了SQLServer体系结构的工作原理。其中介绍了数据库引擎的增强功能及其使用技巧,并提供了相关信息的链接。深入了解SQLServer的引擎有助于数据库管理员(数据库系统工程师)在设计、构建或改进数据库系统时充分利用SQLServer的优势。虽然本文主要面向数据库专业人士,但也可用于教学或营销目的。一.简介本文描述Microsoft?SQLServer?2000中新增的存储引擎功能,并提供相关的使用技巧,同时探讨存储引擎的工作原理。初步掌握存储引擎的工作原理可使您最大限度地发挥SQLServer的性能。当今,人们的注意力集中在应用程序的高可扩展性方面。数据库的设计和实施周期不断缩短,而且由于开发需求的不断变更以及产品使用的增长,又使得数据库在不断地演变发展。为满足可扩展性、可用性和易于使用等方面的要求,需要有一种具有应变能力和灵活性的数据存储引擎。SQLServer2000的不同版本可支持不同规模的系统,其范围从用于PocketPC的小型移动系统到运行在群集Windows?2000DatacenterServer上容量达数TB的高可用性事务处理或决策支持系统。所有这些系统都满足使命关键的业务系统所要求的灵活性、安全性和可靠性要求。由于存储引擎操作的智能化和自动化,因而可以在各种用途和规模的项目中部署SQLServer2000应用程序。高度完善的体系结构改善了性能、可用性和可伸缩性。可用性由于在与物理文件进行交互时采用了新的算法,可靠性和并发能力得到了增强。这些算法减轻了日常维护工作,使您不必再运行数据库控制台命令(DBCC)。然而,DBCC仍旧可以使用,并且新增的DBCCCHECK命令的运行不会干扰联机处理工作。可扩展性存储子系统(由物理数据库文件及其在磁盘上的布局组成)既支持小型数据库,也支持超大型数据库。SQLServer当前可支持最高达64GB物理内存(RAM)和32颗处理器。易于使用增强的管理功能可帮助数据库管理员(DBA)实现服务器的自动管理和集中管理。这也使得对远程服务器和应用程序的维护变得容易,DBA无需访问每个站点。由复杂算法管理的服务器配置可动态对服务器使用方案的变化作出反应,从而使DBA可以将精力集中在数据库管理和优化等任务上。二.存储引擎的增强功能SQLServer2000的关系数据库服务器包括两个主要部分:关系引擎和存储引擎。两个引擎独立工作,它们通过本地数据访问组件(如OLEDB)进行交互。关系引擎提供访问存储引擎的接口,而存储引擎由与基本数据库存储组件和功能进行交互的服务构成。存储引擎的主要任务包括:提供改善管理存储组件易用性的功能管理数据缓冲和对物理文件的所有I/O操作控制并发、管理事务、锁定和日志记录管理用于存储数据的文件和物理页恢复系统故障SQLServer2000中的存储引擎提供概念简单而实际操作比较灵活的新增功能,同时减少了详细规划容量和优化性能的工作。SQLServer2000可以对其环境作出反应,并准确而快速地适应数据库使用上的变化。这种技术上的突破已将数据库管理的重点转移到作为服务的数据简化上。SQLServer2000DBA可以将注意力集中到设计一个可对数据流和数据使用作出响应的系统上,而不再需要将时间浪费在优化个别参数上。2003-6-719:21:00查看评语»»»2003-6-719:23:01SQLServer2000中的变化建立在体系结构的增强上。这种增强是在SQLServer7.0中引入的,其目的是为后来的改进和创新提供基础。存储引擎小组的主要目的是减少花在定期优化服务器上的时间和精力。由于绝大多数的调优参数设置是基于数据库使用的,所以引擎使用自适应算法动态调整这些设置,使其适合数据库环境。调优参数现在可以按这种方式自动调整,而在早期版本中,它们需要不断调整和测试。您仍可以手动调整调优功能,但SQLServer2000可以完成更多的工作。只有很少的SQLServer客户才需要对调优参数进行调整;这种调整工作需要进行仔细的测试,并且需要经验丰富的数据库管理员进行监督。下表总结了SQLServer2000存储引擎的主要增强功能。本文的后面将对这些内容进行详细阐述。功能描述及益处应用程序锁定管理器如果需要控制对应用程序定义的资源(如表单)的并发访问,新增的存储过程允许您使用SQLServer的应用程序锁定管理器锁定这些资源。数据库控制台命令(DBCC)DBCCCHECK命令可以在联机处理过程中运行,且不会中断更新。新增的功能允许校验物理页的一致性,以检测硬件引起的错误。在SQLServer2000企业版中,DBCC可以在多个处理器上以并行方式运行。数据库选项所有的数据库选项都可使用ALTERDATABASE进行修改。此功能简化了管理工作。差异备份在SQLServer2000中,由于改进后的功能可以在更广的层次上跟踪数据库的更改,差异备份的速度更快。动态调优通过使用动态自适应算法,服务器可以自动调整以前是静态不变的配置设置。管理控制仍可用于管理系统范围的资源,但以后您不必使用它们。手动设置参数可以在它们的约束边界内动态调整。行内文本在包含较小且使用频繁的文本列的表中,较小的文本值可以与标准数据行存储在同一页中,而不必存储在文本值页中。如果表中包含这种被频繁访问的文本数据,此功能可减少大量磁盘I/O操作。并行建立索引在企业版中,索引建立过程自动使用为并行处理配置的所有处理器,减少了建立索引所需的时间;例如,在一台八处理器的服务器中,时间缩短到原来的六分之一。索引建立过程还可利用内存和tempdb中的可用资源。预读索引读取索引的功能得到增强,提高了扫描索引的性能。重组索引对DBCCSHOWCONTIG进行的改进提供了有关索引碎片的详细信息。新增的DBCC命令INDEXDEFRAG可联机重组索引页,且不会中断数据库服务,也不会导致数据库一致性或故障恢复方面的问题。降序排列索引中的键列索引中的各个键列可单独指定为升序或降序。KILL命令此命令现在报告完成的进度。如果此命令正在等待另一个进程(例如回滚),则可以查看命令执行的进度。改进后的命令可以用于停止Microsoft分布式事务协调器(MSDTC)事务,而这些事务并不与特定会话相关联。对高内存量的支持Windows2000中的技术改进了使用大量内存的企业版系统的性能。通过使用Windows2000的AWE扩展,SQLServer2000可至多支持64GB物理内存(RAM)。锁定改进后的锁定管理器可探测到其它资源(如线程和内存)的死锁情况。并发能力的改善同时也降低了死锁的发生,从而进一步加强了SQLServer2000的可扩展性。逻辑日志标记Transact-SQL命令可在日志中创建书签,使数据库可以恢复到书签所示的时点。此功能还可同步恢复用于同一应用程序的多个数据库。联机索引重组对DBCCSHOWCONTIG进行的改进提供了有关索引碎片的详细信息。新增的DBCC命令INDEXDEFRAG可联机重组索引页,且不会中断数据库服务,也不会导致数据库一致性或故障恢复方面的问题。优化的预读I/O操作对于扫描所涉及的每个文件,SQLServer2000都会同时发出多个连续的、预读读取操作。为提高性能,查询优化器在扫描表和索引时使用连续的预读I/O操作。密码保护备份可使用密码保护备份媒体和单独的备份。这样可以防止未授权的用户恢复备份并访问数据库。故障恢复模式通过使用故障恢复模式,可以选择数据库的日志记录级别。这样事务日志管理更加灵活。故障恢复模式可联机更改,以适应一天当中不断变化的数据库使用。共享表扫描在企业版中,对某个表的多次扫描可以利用其他进行中的对该表的扫描,减少了对磁盘的实际I/O操作。收缩日志收缩日志命令可在更多的情况下立即运行。即使不能立即收缩日志,SQLServer也会提供建议性的反馈,说明在继续或完成收缩操作之前必需完成的操作。快照备份对第三方供应商提供的快照备份的支持进一步得到加强。快照备份采用存储技术,可以在几秒内备份或恢复整个数据库。如今,可以将这些备份与常规事务日志及差异备份相结合,为OLTP数据库提供完整的保护。此功能对于中型或大型数据库是非常有益的,因为在这种环境中可用性是非常重要的。节省空间的空表和索引SQLServer2000不为空表和索引分配磁盘页。SQLServer7.0会给空表和索引分配多达三个磁盘页。前n项排序此新功能可优化前n项值的检索(例如,SELECTTOP5*FROMtablename)。XlockSQLServer2000提供这种新的Transact-SQL锁定提示。它可用于明确调用互斥的、事务级别的页或表锁。SQLServer2000中增加了许多功能,这些功能使数据交互更为有效,使管理更加灵活。以下部分将详细介绍这些增强功能,并提供相关的使用技巧。2003-6-719:26:12三.与数据进行交互在SQLServer2000中,存储引擎的功能得到增强,在与数据进行交互时可提供更好的可扩展性及性能。了解这些增强的功能有助于更有效地使用SQLServer。无论是通过用户界面还是自动执行的任务,数据交换都从查询开始。数据请求先被传递到关系引擎,然后关系引擎与存储引擎进行交互以获取数据,并将其传递给用户。无论是从用户还是DBA的角度来看,存储和关系引擎的功能是无法区分的。更有效地读取数据数据通过一系列事务在服务器和用户之间传递。应用程序或用户启动任务后,数据库将其传递给查询处理器进行处理,然后返回最终结果。查询处理器通过接收、解释和执行SQL语句来完成任务。例如,当用户会话发出SELECT语句时,将会执行以下步骤:关系引擎将语句进行编译和优化后,将其纳入执行计划(获取数据所需的一系列步骤)。然后,关系引擎运行执行计划。执行步骤包括通过存储引擎访问表和索引。关系引擎解释执行计划,调用存储引擎以收集所需的信息。关系引擎将存储引擎返回的所有数据组合到最终的结果集中,然后将结果集返回给用户。为提高此过程的性能,进行了两项改进。在SQLServer2000中,关系引擎将核准查询谓词的工作交由存储引擎完成,这样在该过程中这些谓词能尽早得到处理,因而提高了存储和关系引擎之间数据交换的效率。此项改进使核准查询的效率显著提高。增强的Topn功能另一项改进是存储引擎处理从结果集中选择前n个记录的方式。在SQLServer2000中,新的Topn引擎将分析类似以下语句的最佳操作路径:SELECTtop5*fromordersorderbydate_ordereddesc在本例中,如果必须搜索整个表,则引擎会分析数据并只跟踪高速缓存中的前n项数值。这种方式将大幅提高上述SELECT语句的性能,因为只有前n项值需要排序,而非整个表。共享扫描在SQLServer2000企业版中,两个或多个查询可共享正在进行的表扫描,此项功能可改善大型SQLServer2000数据库的性能。例如,当查询使用无序扫描查询一个很大的表时,高速缓存中的页面将被清空,以便为流入数据腾出空间。如果另一个查询已经开始,对同一表的第二次扫描就会使磁盘I/O再次检索这些页面。在频繁进行表扫描的环境中,当两个查询搜索相同的数据页时,这将导致磁盘颠簸。图1:共享扫描效果优化的进程可减少由此类数据访问模式造成的磁盘I/O操作。对表的第一个无序扫描将从磁盘中读取数据;后续的对同一表的无序扫描不必再读取硬盘,而只需使用已在内存中的信息。参见图1。在对同一个表同时进行