职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 1768|回复: 0

SQL Server 2000存储引擎

[复制链接]
俺是一只狼 发表于 2007-8-19 15:28 | 显示全部楼层 |阅读模式
SQL Server 2000存储引擎

在一个关注于高度可伸缩应用的世界当中,数据库需要在尽可能短的时间内设计和实施完毕,并且根据业务发展要求的变化和产品使用不断加以改进和变化。伸缩性、可用性和易用性要求决定了数据存储引擎必须是灵活和能做出快速响应的。
SQL Server 2000的多个不同版本可以为各种系统提供支持,范围从面向Pocket PC的小型移动系统到运行在Windows(r) 2000 Datacenter Servers群集上的决策支持系统和支持TB级数据规模的事务处理系统。所有这些系统都能满足关键任务系统对灵活性、安全性和可靠性的要求。
存储引擎增强
SQL Server 2000的关系型数据库服务器具有两个主要部分:关系引擎和存储引擎。这两个引擎均独立工作,彼此间通过类似OLE DB这样的数据访问组件进行交互。关系引擎提供了一个进入存储引擎的接口,它由同底层数据库存储组件和功能进行交互的一些服务组成。
存储引擎主要负责:
* 提供能使存储组件更易于管理的功能
* 管理数据缓冲区和所有到物理文件的I/O
* 控制并发、管理事务、锁定和日志记录
* 管理用于存储数据的文件和物理页面
* 从系统故障中恢复
SQL Server 2000存储引擎提供了一些可以简化概念和增加物理灵活性的新特性,同时降低了对容量规划和性能调整的需要。SQL Server 2000可以对环境做出反应,并自动准确和迅速适应数据库使用中所发生的变化。SQL Server 2000 的DBA(数据库管理员)可以将注意力放在设计负责数据流和数据使用的系统上面,而不是花费大量时间对单个参数进行调整。 下面从数据库的管理方面对存储引擎进行介绍。
数据库校验
DBCC提供了各种管理能力,包括针对数据库连续性进行校验的CHECK命令。
SQL Server 7.0和SQL Server 2000的经验证明:硬件问题是引起数据库不连续的原因,在正常操作期间,数据库引擎或应用程序不一定能检测到这些硬件问题。对于那些不经常访问的数据则更是如此。为了解决这个问题, SQL Server 2000引入了一个检查模式:Physical_Only,它被设计用来检查由硬件引起的大多数问题。它的运行速度非常快,大约相当于磁盘扫描速度,而且不会占用很多资源。
因为SQL Server存储引擎中的基础构架已经得到了改进,将数据库校验作为数据库日常维护的一部分就变得不那么必要了。但是,Microsoft仍然承诺将数据库校验工具作为任务关键型数据管理的一个重要组成部分。建议您:
* 偶尔运行Physical_Only检查,运行频率取决于您对底层硬件的信心,特别是对磁盘子系统的信心。
* 在关键时刻——例如硬件或软件升级时,或者由于未知原因引起故障时——运行一次全面的数据库检查。

不建议您将完全检查作为日常维护工作的一部分。
SQL Server 2000中的数据库校验还包括了以下一些重要增强特性:
* 默认情况下,数据库的检查是完全在线进行的。在线检查对事务负载的影响比较低。影响的大小要取决于系统负载、硬件配置和tempdb的速度。根据Microsoft的测量结果,在中度OLTP工作负载(50%CPU利用率)的情况下,产生的影响为15%到 20%。所提供的TABLOCK选项可以强制检查过程对共享表进行锁定,这样会提高运行的速度,但是会阻止数据库得到更新。
* 可以在对称多处理(SMP)计算机上以并行方式进行检查,您可以在SQL Server实例中进行设置以限制允许的最大并行度。
SQL Server 2000的数据库检查命令继续支持在SQL Server 7.0中引入的修复功能。在某些情况下,可以使用离线修复来代替备份文件的恢复。

数据库状态控制
SQL Server 2000增强了ALTER DATABASE语句, 以允许通过Transact-SQL命令对数据库状态进行更多的控制。现在,所有的数据库选项都可以通过ALTER DATABASE命令被修改,从而提供了更大的控制能力; Transact-SQL命令sp_helpdb 和DatabasePropertyEx() 可以提供同数据库状态有关的信息。
SQL Server还设置了以下状态以对数据库内的各种情况做出反应:还原、恢复和挂起。这些数据库选项可以通过ALTER DATABASE语句的SET子句、sp_dboption系统存储过程、或者在某些情况下,可以通过SQL Server Enterprise Manager来进行设置。
当数据库的状态发生变化时,使数据库状态发生变化的会话仍然保持连接,而同新的数据库状态不一致的会话将被终止,而且终止会话中的事务会回滚。
动态调整
在SQL Server 2000中,基于使用的性能调整是动态管理的,无需(或者说不建议)手动进行调整。静态参数已经被取消,但仍然可以为特定资源获得管理控制能力(例如,设置一个SQL Server所能使用的内存数量上限)。和根据平均值和估计进行的手动调整相比,这种方法的准确性更高,而且响应速度更快。它允许您将精力集中在数据库管理的设计层面,而不需象传统的数据库系统那样需要大量的手工管理和调整。
SQL Server 2000在存储引擎中引入了一种动态算法,它可以主动监视服务器的使用情况,并且在内部对设置进行调整。SQL Server 2000中的动态反馈和分析可以将设置保持在最优值的10%范围之内(见图3),从而使您获得了性能更佳且具有高度适应性的系统。
文件、文件组和磁盘
SQL Server将数据和日志存储在磁盘文件中。在基本安装方式下,作为默认设置,数据和日志文件都存放在服务器配置中指定的默认位置。但是,为了最大化系统的性能和可管理性,您可以应用以下几条基本原则:
* 将数据分散到尽可能多的磁盘、通道和控制器上。
通常情况下,您拥有的磁盘(磁盘阵列)越多(不管每个磁盘的容量大小为多少),对控制器和通道的访问速度越快,存储引擎读写数据的速度也就越快。随着所使用系统变得越来越大,通过将数据文件同日志文件存储在不同的物理驱动器而将它们分离开来也就变得越来越重要。此外,因为对tempdb的使用是不断变化的,您应该将tempdb存储在一个大的磁盘集中,例如,同数据文件放在一起或者放在一组磁盘上。
* 利用文件组使您的企业数据库变得更加易于管理。
每个数据库开始时都有一个默认的文件组。因为SQL Server 2000无需额外的文件组就可以有效工作,很多系统不需要添加用户自己定义的文件组。但是,随着系统的不断增长,使用额外的文件组可以提供更多的可管理性,但必须由有经验的DBA进行实施和维护。
在SQL Server 2000中,如果您将数据库内的一个特定文件组设置为只读,文件组中的数据将不能被更改,但是类似权限这样的目录信息仍然可以被管理。
说明:在SQL Server 2000中,异步I/O的数量在数据库引擎内部自动进行管理,而且和SQL Server 7.0一样,它不受所使用文件或文件组数量的影响。
结论
对于DBA来说,更高的灵活性和更强的性能控制能力使他们得到了解放,他们可以将他们的数据库技能和经验集中在数据库代码的管理、设计和存储组件上,并使用统一的方法管理数据库系统。限于篇幅,这里仅介绍了存储引擎针对于数据库管理部分的增强性能,此外,SQL Server 2000数据库引擎为各种数据库的实现方式均提供了强大的扩展形和灵活性。
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-10 11:34 , Processed in 0.115952 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表