王朝网络
分享
 
 
 

Microsoft SQl Server 2005技术内幕:存储引擎

王朝导购·作者佚名
 
Microsoft SQl Server 2005技术内幕:存储引擎  点此进入淘宝搜索页搜索
  特别声明:本站仅为商品信息简介,并不出售商品,您可点击文中链接进入淘宝网搜索页搜索该商品,有任何问题请与具体淘宝商家联系。
  参考价格: 点此进入淘宝搜索页搜索
  分类: 图书,计算机与互联网,数据库,SQLServer,
  品牌: Kalen Delaney 著

基本信息·出版社:电子工业出版社

·页码:431 页

·出版日期:2007年

·ISBN:9787121046742

·条形码:9787121046742

·包装版本:2007年9月第1版

·装帧:平装

·开本:16开

产品信息有问题吗?请帮我们更新产品信息。

内容简介《Microsoft SQl Server 2005技术内幕:存储引擎》是Inside Microsoft SQL Server 2000的作者Kalen Delaney的又一经典著作,是Inside Microsoft SQL Server 2005系列四本著作中的一本。《Microsoft SQl Server 2005技术内幕:存储引擎》对SQL Server 2005存储引擎方面的知识进行了全面而详细的阐述,包括数据库文件、日志和恢复、表、索引及其管理、锁定和并发等内容。除了解释设计理念与运作原理外,书中还辅之以大量简短而有力的实例。您将跟随一位广受欢迎的作家同时也是SQL Server资深专家一起深入探索SQL Server存储引擎的技术内幕。

作者简介Kalen Delaney是Solid Quality Learning的创建人之一,并且从事SQL Server的工作已有19年,从1987年起开始受雇于Sybase 公司。

1992年,在从旧金山海湾搬家到美丽的太平洋西北部之后,Kalen成为一名独立的培训师和顾问。在随后的几年里,她和微软及Sybase公司一起开发课程并为他们的技术支持员工提供内部培训。

1998年,Kalen为微软的产品支持团队开设了一门内部课程,以帮助他们学习SQL Server 7的内部工作原理和新特性。她还为SQL Server 2000开展了一个类似的课程。在很多年里,Kalen把这些课程传授给位于全美和全世界的众多微软的办公室相关人员和合作伙伴。现在她为自己的顾客提供SQL Server 2005体系结构、内部实现和查询调校的课程,这些你可以在Solid Quality Learning的网页(www.SolidQualityLearning.com)上找到。

1995年,微软授予了Kalen MVP(最有价值的专家)的称号,因为她参与了在微软的新闻服务器(msnews.microsoft.com)上的SQL Server公共帮助论坛。现在,她仍然定期参与公共论坛,解答与SQL Server 内部实现和行为有关的许多问题。

在1999年初,她被邀请参加成立一个非营利性的、国际的SQL Server用户组的最初计划委员会。以那个计划委员会为基础,SQL Server专业组织(Professional Association for SQL Server,PASS)诞生了。她头两年担任“Program Development”部门的主管,并于1999年10月在芝加哥举行的开幕会议上作了演讲。从那以后,她在每届的PASS会议上都作了讲话。

在2002年,Kalen和她的5位同事创建了属于他们自己的公司,致力于提供世界上最先进的SQL Server培训。在随后的4年多的时间里,Solid Quality Learning已经发展成为一个拥有来自世界各地的40多名SQL Server专家的公司。

媒体推荐前言

这是一部开创性的著作。它对SQL Server数据库引擎的体系结构进行了描述。Kalen Delaney的上一本描述SQL Server 2000的书一直在我的办公桌上,同样被大多数SQL Server的专家们所使用。无论什么时候,当你需要简明描述某件事情是如何工作的或者系统某个方面的设计原理时,都可以参考这本书。确实,大多数SQL Server的设计者和开发者都使用Kalen的书作为参考。所以Kalen一直被我们的一个问题所纠缠:“我们什么时候能够看到一本SQL Server 2005的书出版?”

刚刚读完校样,我终于明白这本书为什么花了那么长时间。它不是上一本书的修订,许多地方都已经改变,并且Kalen拥有如此多的新专题去写一本全新的书。她和设计师们密切联系以理解新的设计,然后再把这些设计以她那简明准确的风格描述出来。这个结果值得等待。这本书内容丰富广博,我从内部观察SQL Server 2005的开发,有时还参与到设计的讨论中去。尽管如此,我还是不能理解这么大的一个体系中的许多内容。在读这个校样的过程中,我学到了许多东西。我将在最近几年的时间里重读这些章节来加深我的理解。

这本书解释系统是怎样工作的,并且让你对设计者的意图有一个深刻的理解——例如深入探讨页面格式、解释分配策略、临时表和表变量的不同、快照隔离级别是如何工作的、恢复选项、目录视图、隔离级别及其实现等等。这些描述深刻、简明,而且容易接受和便于理解。一直以来,这本书在应用程序设计、数据库设计、物理数据布局和性能调校方面都给出了明智的建议。

从宏观来看,SQL Server联机丛书描述存在些什么;许多书描述怎样使用那些存在的特性;这本书描述了数据库引擎特性背后的设计原理,以及它们是怎样工作的。在我们理解这些原理和机制后,就可以经常推断出如何工作会工作得很好,以及如何工作将会出现问题。所以我诚恳地将这本书推荐给那些需要涉及SQL Server 2005系统的设计、实现或处理的人们。

Jim Gray

Technical Fellow,Microsoft Research

1999ACM 图灵奖获得者

引言

我认为创作和出版一本书最大的乐趣是获得读者的反馈。最郁闷的事当然是收到读者们来信抱怨本书没有包含他们最关心的主题。然而经过再三考虑我认为自己必须接受的事实是这本书不能包揽一切,虽然我也希望它能够这样。SQL Server 2005是一个非常庞大、复杂的产品,我们即使使用多本专著也很难涵盖到它的每一个特性。我希望读者们能够把这本书看作一个半满而不是半空的杯子,并能够欣赏《Microsoft SQL Server 2005技术内幕》各册所包含的信息。至于没有涵盖到的一些主题,我希望读者们可以从地方获得所需的信息。

这部丛书所关注的焦点就隐含在其名字中,就是SQL Server的核心引擎,特别是查询处理器和存储引擎。这部丛书不会讨论客户端编程接口、异构查询和商业智能及复制。实际上大多数针对高可用性的特性本丛书都没有涉及,仅仅讨论了其中少数几个特性,例如镜像(当讨论数据库属性设置时会从上层架构对其进行描述)。这里也没有对一些内部操作例如安全性进行深入论述——这样的话我必须为该丛书再增撰十册,并且这在该产品的下一个版本发布之前是不可能完成的。

Microsoft SQL Server技术内幕丛书的历史

Microsoft SQL Server技术内幕的第一版是针对6.5版本而写的,它确实尝试了涵盖该产品的几乎所有特性。不过那时的产品规模相当小。另外当时也很少有关于该产品的其他书籍,所以原创作者(Ron Soukup)当时无法向读者推荐关于特定主题的书籍。尽管如此,第一卷也没有能够涵盖到每一个主题,包括复制和安全性。Ron也没有讨论备份和还原SQL Server数据库的细节,并且实际上也没有探讨事务日志的使用和管理。

从SQL Server 7.0开始我接管了这本书,并且因为整个存储引擎都已经改变了,所以我完全重写了描述存储引擎内部的各个部分。在SQL Server 7.0中,页面结构、索引组织和锁定资源的管理都与之前的版本完全不同。

《Microsoft SQL Server 7.0技术内幕》的其中一章对事务、存储过程和触发器进行了讨论。对SQL Server 2000版本,因为增加了针对用户定义函数的新特性和新的触发器功能,所以我将其分为两章。在7.0版本中,有一个庞大的章节讨论查询处理和调校,SQL Server 2000版本则将这些主题分为两章。其中一章是关于查询处理的内部实现和SQL Server优化器的工作机制,另一章则为如何编写性能更好的查询提供了指导。《Microsoft SQL Server 2000技术内幕》还涵盖了关于事务日志工作原理的许多细节,以及对备份和还原操作期间日志是如何使用的进行了深入讨论。

丛书结构

早在《Microsoft SQL Server 2005技术内幕》的策划阶段,我就意识到用一册书来涵盖我所希望的一切是不现实的。我最初的想法是用一册书来讨论存储引擎组件和实际的数据管理,用第二册来讨论如何使用T-SQL语言和优化查询。不久我就发现第二个主题实在太大以至于不能用一册书来完成,部分是因为SQL Server 2005提供了非常多的新的T-SQL特性。因为对新的编程结构的充分讨论需要单独一册书才能完成,所以我邀请了T-SQL大师Itzik Ben-Gan来创作一册针对SQL Server 2005的T-SQL专著。Itzik是一位多才的作家,在我尚未完成对存储引擎这册书的规划之前他就已经完成了500多页的内容。这时,他意识到T-SQL语言这个主题太大以至于需要两册书来涵盖所需要的内容。这样,《Microsoft SQL Server 2005技术内幕》就变成了一部四册的专著。

虽然我们的目标之一是尽量减少各册之间的重叠以便整套丛书的读者在阅读该丛书时不会读到重复的内容,但是我们意识到不是所有的读者都会从同一册开始阅读。因为Itzik和我使用不同的方法来描述SQL Server查询处理、索引使用和性能调校,所以实际上那些在多册书中被重复讨论的主题对帮助读者理解是相当有益的。

《Microsoft SQL Server 2005技术内幕:T-SQL查询》

T-SQL查询这册书描述了T-SQL查询语言的基本结构,并对逻辑的和物理的查询处理进行了彻底讨论。该书介绍了一套查询调校的方法。Itzik对所有新的T-SQL查询结构的使用和行为进行了细致的讨论,这包括CTE、PIVOT和UNPIVOT操作符,以及分级函数。他讨论了对TOP从句的增强,还提供了一些例子来介绍一些新的并且很有用的方法来为我们的查询加入集合操作。对数据修改操作符的新功能(INSERT、UPDATE和DELETE)也进行了深入描述。

《Microsoft SQL Server 2005技术内幕:T-SQL程序设计》

《T-SQL程序设计》这本书重点论述了T-SQL语言的可编程特性,并涵盖了对SQL Server应用中的事务、存储过程、函数和触发器的规划和使用。Itzik比较了分别基于集合与游标的编程技术并描述了如何确定哪一种技术更加合适,并且他还比较了CLR与关系编程并描述了哪一种技术更加适合哪一种活动。该书涵盖了临时对象的使用并探究了SQL Server 2005中新的错误处理功能。Itzik讨论了使用多种数据类型的主体,包括XML数据类型和用户定义的CLR数据类型。最后,本书中有一章是关于SQL Server Broker的,它能够在数据库应用程序中支持可控异步处理。

《Microsoft SQL Server 2005技术内幕:存储引擎》

您手中的这本书涵盖了SQL Server 2005的存储引擎。开始创作本书的时候,我先是从《Microsoft SQL Server 2000技术内幕》中取出一些与存储引擎主题相关的章节,然后再确定要涵盖哪些合适的特性。但很快我就意识到需要进行一些重新组织,这时我已经完成了完整的两章,分别是关于体系结构的一章和事务日志的一章。如同先前所有版本一样,我深入研究了数据文件中数据和索引的实际物理存储,并描述了文件空间的分配和管理。还介绍了一些没有正式公布的跟踪标记和DBCC命令,它们可以用来在合适的场合描述某些特性并帮助我们确认对SQL Server行为的理解是正确的。

在论述到SQL Server 2005中的新特性时,我会将其一一指出,下面是本书所细致涵盖的一些最重要的新特性。请注意,我们并不会对本书提到的所有的新特性都进行深入讨论。

■SQL Server 2005元数据视图,包括兼容性视图、目录视图和动态管理视图(和函数)。

■数据库快照。

■用户/架构分离。

■大数据对象存储,包括行溢出数据和varchar(MAX)数据。

■分区表和索引的存储。

■联机索引创建和重建。

■快照隔离和行级版本控制。

《Microsoft SQL Server 2005技术内幕:查询调校和最优化》

本丛书的最后一册将是基于对真实世界中的SQL Server 2005的运行方式的观察,并将阐述如何最大限度地在真实的应用中利用该产品。这将是由多个作者完成的著作,每个作者负责他最擅长的领域。涵盖的主题将会包括:

■确定什么地方需要进行调校的方法论。

■优化器是如何确定理想的查询计划的。

■使用SQL Server Profiler来监视SQL Server 2005。

■查询计划的缓存和重用。

■强制查询计划。

■分区和索引视图的最优方法。

■选择最佳索引。

■取回查询结果和数据修改的提示和技巧。

例子和脚本

本书所描述的很多特性和行为都是通过T-SQL代码来描述的。其中一些代码只有短短数行,但是另外一些例子则需要相当复杂的编码,包括对一些动态管理视图进行连接的多种方法,所有这些都非常长并且很难打印出名字。

所有较长的示例代码都可以通过关联站点www.InsideSQLServer.com/companion进行下载。

未被涵盖的主题

我曾经提到过即使是使用四册书,也不能涵盖该产品的某些特性和方面。同时必须牢记,本丛书并不是教数据库管理员和应用程序开发者“如何做”的图书,而是阐述SQL Server幕后是如何工作的资料。 本丛书可以帮助读者拥有创建和诊断基于SQL Server的应用程序的坚实基础,并帮助理解SQL Server各种行为背后的原因。

除了商业智能(Analysis Service、Integration Service和Reporting Service)和高可用性(复制、数据库镜像、日志传送和集群),超出本书讨论范围的主题包括:

■Notification Services。

■XML索引。

■全文检索。

■客户端编程接口。

免责条款

为了描述SQL Server的一些行为,本书对一些没有正式公布的产品特性和对象进行了讨论,例如内部表。其中一些是读者自己有可能通过查看所支持的函数、存储过程和视图的定义发现的。在这些情况下,我只是通过向您提供一些您自己最终也会发现的信息而为您节约时间。另外一类未正式公布的特性是未正式公布的DBCC命令和跟踪标记,我在这里介绍它们只是为了对产品的某些行为进行更为细致的观察和深入的分析。除非有他人告知,大多数人是不能自己发现这类特性的。请一定牢记,未正式公布意味着不被支持。这就意味着如果读者对这些未正式公布特性有额外的问题,那么是不能通过致电微软客户支持服务中心来获得客户代表对这些问题的解答的。同时也不能保证一个未正式公布的特性会继续出现在下一版本的产品中。在某些情况下,未正式公布的特性会在一个Service Pack中改变行为,并且微软没有责任来通过readme文件或知识库文章来通知这一变化。在本书中当提到未正式公布的特性或工具时我会加以声明,并且在某些情况下我会重复强调微软不提供对它们的支持。请记住,该警告适用于本书中涉及的所有微软未正式公布的特性。

如何获得支持

我们已经尽了一切努力来保证本书内容的准确性。如果您遇到问题,请参考下面的资源。

关联站点

虽然我希望本书没有任何错误,并且请微软的SQL Server团队成员审阅了此书,但是该书仍然不是完美的,事实上也不存在这种完美无缺的书。对本书的更新和校正将会被张贴在关联站点www.InsideSQLServer.com/companion上。另外,如果发现任何您认为不正确的地方,您随时都可以使用该站点提供的反馈表与我取得联系。

微软学习站点

微软为各种图书的校正提供了下面的站点地址:

http://www.microsoft.com/learning/support

我们可以打开http://www.microsoft.com/learning/support/search.asp来直接连线微软学习知识库并查询我们所遇到的问题。

除了向作者发送反馈,读者还可以通过使用下面的方法向微软发送评论或问题。

邮局邮件:

Microsoft Learning

Attn: Inside Microsoft SQL Server 2005 Editor

One Microsoft Way

Redmond, WA 98052-6399

电子邮件:

mspinput@microsoft.com

请注意上面的地址并不提供产品支持。要获得SQL Server产品支持请打开站点www.microsoft.com/sql。我们还可以致电425-635-7011来获得标准支持服务,工作时间为周一到周五6AM-6PM太平洋时间,我们还可以搜索微软在线支持www.support.microsoft.com/ support。

虽然本书可能没有涵盖所有您所感兴趣的主题,但是我还是希望您能够从本书中找到有价值的信息。您可以告知我您所希望进一步学习的主题,我可能会向您推荐一些图书或者白皮书,也可能会通过SQL Server Magazine发表一篇相应的文章。您可以通过Web站点www.InsideSQLServer.com来联系我。

推荐序

有信息界诺贝尔奖美誉的图灵奖(Turing Award)得主Jim Gray在英文版推荐序中说道:“若论微软 SQL Server方面的最重要著作,大概非 Inside Microsoft SQL Server 系列丛书莫属。自SQL Server 6.5 发布以来,常驻在专业 SQL Server 开发者、DBA案头的就是对应各版本的该系列丛书了。”

由于 SQL Server 2005 大幅改版,新增了大量的功能,让原本极为厚重的 Inside Microsoft SQL Server类图书再无法以单行本形式出版,而改为四本合集的系列丛书。本书的执笔者为先前Inside Microsoft SQL Server 各版本的作者 Kalen Delaney。在Inside Micosoft SQL Server 2005 系列的四本书中,她改任丛书编辑,并亲自执笔撰写本书。

翻开本书即看到 Kalen Delaney 的致谢,她对本书的严谨要求,以及参与该书写作的作者队伍的实力让人叹为观止。大概很少有书有如此多的官方技术人员亲自参与写作,并提供技术咨询和技术审校。此外,本书还有微软出版社的编辑负责审稿,以及她的同事的大力相助。或许,要撰写SQL Server 这类大型产品的相关书籍还真需要人脉广、经验足才行。

笔者长年在企业间解决 SQL Server 的问题,例如不会用、性能不佳、无法扩充、不稳定、不安全等,其中最主要的原因是用户不够了解产品。尤其是一般人存有误解,以为 SQL Server 不需要专业的学习与管理,像Office等产品比较容易使用。若执行起来不如预期,他们便认定产品本身能力不足。其实不然,SQL Server 在世界各地都已经进入企业关键系统,数以兆(tera)计的数据量比比皆是。而我们所欠缺的是深入的知识与经验,以发挥 SQL Server 的各种功能。想善用 SQL Server,先要了解它是怎么办到的,此书便是钻研其设计原理的最佳途径。

相信常用数据库管理与开发的人员大都熟悉数据库、数据表或创建索引、管理事务。但对存储引擎(Storage Engine)如何实际完成你的要求,却讳莫如深。本书深入剖析了该服务的运作原理,让你既知其然也知其所以然。

本书锁定数据引擎的基础运作,例如数据库的设置与数据实际在硬盘的摆放、索引结构、事务与锁定等。书中除了解释设计理念与运作原理外,还辅之以测试验证的方式。因此,本书中蕴含了许多官方文件没有说明的技巧,如查询特定的动态管理视图,执行各种 DBCC 指令,如 DBCC IND、DBCC PAGE等各种跟踪标记等。藉以解释 SQL Server 如何使用 CPU、内存、硬盘与网络等硬件资源,数据表、索引页、事务记录的结构,数据在新增、修改、删除的过程中对实体存放的影响,事务与锁定的运作原理等。

由于 SQL Server 2005 提供了非常多的服务,如 Database Services、Analysis Services、Reporting Services、Notification Services、Integration Services 等,让SQL Server 像个品牌,如同Office 一样,它涵盖了非常多单一的产品。再加上诸多版本,如 Enterprise、Standard、Workgroup、Developer、Express等,还有 32 或 64 位的差异,让安装 SQL Server 变得复杂。一般的新用户恐怕连需要安装哪些服务、各安装步骤的意义及它们对其后系统执行时的影响都一知半解。本书的第1章从安装与升级开始谈起,可见得 SQL Server 2005 的安装都变得有学问了?

SQL Server 的数据库服务由多个组件所组成,可大致分为协议访问层、关系引擎(Relational Engine,一般也称为查询处理器 Query Processor)、存储引擎、SQL 核心等部分。本书的第2章先概略介绍这些组件的定位,好让读者知道本书所讨论的重点——存储引擎在整体 SQL Server 数据库服务中所占的位置。

SQL Server 服务器实例和数据库皆提供了相当多的设置,但由于默认值已经符合大多数的使用情境,因此 SQL Server DBA们大都不会深究这些设置。但随着使用人数增多,数据量增大,安全需求提高,这些设置就变得非常重要。本书的第3章和第4章详细解说了这些设置。另外,如何抢救受损的数据库,如何有效使用 tempdb 系统数据库,以及SQL Server 2005 所新增的 Database Snapshot、Schema 等功能也是重点。

为维护数据更新时的完整性,SQL Server 通过放在硬盘上的事务记录(transaction log)先行记载变更,再批次更新到数据文件中。但又为了执行效率与稳定,必须设计一系列精细的运作。而管理者需要熟悉这些运作,以提供足够的硬盘空间,并设计数据库备份的策略。本书第5章探讨了事务记录的运作方式,并剖析了备份还原的设计。

数据表是实际存放数据的地方,也就是一切访问的核心。如何有效地切割数据字段,精确地使用数据格式,设置各种维护数据正确性的条件约束(Constraint)等都是数据库管理员和程序设计人员所需要谨慎考虑的。本书第6章详细解释了系统数据表、系统视图与元数据、数据实际在硬盘上的摆放方式、各种数据类型对储存的影响及修改既有的数据表设计。

索引是有效使用数据库引擎最重要的议题之一,但建立与维护索引并不是一件容易的事。索引建少了,查询效率不好;建多了,将影响新增、修改、删除等操作。什么字段该建,是否要对该字段、视图建索引?建立索引将耗掉多少硬盘资源等都是数据库管理员所必备的知识。本书第7章占据了全书最大的篇幅,详细解释了索引的组织结构、聚集(Clustered)和非聚集(Nonclustered)索引的差异、数据分割(Partition)、SQL Server 创建和维护索引的方式。管理员应注意的数据不连续与索引重整等议题。

当多人或多个批处理同时访问相同范围的数据时,事务与锁定就变得很重要。SQL Server 2005 在此版加入了“记录版本(row versioning)”功能,本书作者称为“乐观并行”(Optimistic concurrency),而称呼经由资源锁定的并行处理为“悲观并行”(Pessimistic concurrency)。SQL Server 2000以前的版本仅支持悲观并行。“记录版本”保留记录最后完成事务的值,供用户查询,让查询的工作不影响修改的工作,反之亦然。而不像以往通过资源锁定的方式,在默认的事务级别下,正在读的记录不能改,正在改的记录不能读。而不管是哪一种并行处理,本书第8章都提供了深入的解释,这是多人同时访问时,性能好坏的关键因素之一。

本书不是入门书,不会一步步引导你如何操作。若你尚不了解 SQL Server,玩得不深,学习本书可能就显得沉重了些。而就算你是专业的 SQL Server 管理师,我相信本书依然是蛮难啃的。因为作者解释的大都是 SQL Server 底层的运作原理,少有操作讲解。为了解释,在书中提供像字典似的列表,并辅之以示意图。读起来枯燥无味,但面临问题时,是深入探究的起点。

虽然章节间没有必然关系,但整本书的顺序还是从基础到高级,因此从第1章看起是比较好的。快速浏览过各章节的内容后,在实际工作时,碰到需要深入研究的问题,再回来温习书中所解释的原理。对于读不懂的章节不要沮丧,大部分的人应该都跟你一样,待更有经验且有空时,重新读过,相信会有不同的收获。

若你已经是 SQL Server 2000 的高手,这本书依然适用。我建议你浏览与精读并用,遇到熟知的部分快速翻阅,但读到 2005 新增的部分,就需要手脑并用。既详读文章,又在 SQL Server 2005 上操作一遍,确认你真的读通了。此刻,你已再上层楼。

胡百敬

2007.6.25于台湾

译序1

经过四个半月的不懈努力,本书的中文版终于与广大读者见面了。正如图灵奖获得者Jim Gray所说,“这是一部全新的创作”。与SQL Server 2000相比,SQL Server 2005可以称得上是一个全新的产品。但本书却秉承了作者一贯的从读者出发,论述深入浅出、通俗易懂的风格。我从事数据库研究和故障诊断已有多年,第一次阅读本书便被它优雅的风格所深深吸引,因此很快就决定接受博文视点的邀请,用我们的母语将该书翻译出来,与大家一同分享。

SQL Server 2005的诞生历时五年,参与的开发人员高达5 000多人,几乎是完全重新设计,在实现了所有已有功能的基础上,添加了难以计数的新特性。微软凭借SQL Server 2000站稳了中小型DBMS市场的脚跟,而SQL Server 2005则肩负了与Oracle逐鹿大型DBMS市场的使命。事实上,SQL Server 2005两年来在大型DBMS的市场增长速度确是超群脱俗。在这种背景下,创作一本深入论述该产品的著作无异于平地起高楼,难度和工作量都非常巨大。作者利用她与微软的渊源,与SQL Server产品组的设计和开发人员进行了长期深入而广泛的沟通,确保了本书的内容是真正的“内幕”。由于SQL Server的庞大和复杂,作者非常聪明地避免了面面俱到的介绍,而是直指核心。将篇幅用在了刀刃上,重点论述了SQL Server 2005核心引擎的工作原理。为了便于读者理解,除了通俗易懂的语言,作者还非常善于使用直观的示意图和简明的代码来说明问题。

本书深入探讨了页面格式,解释分配策略、临时表和表变量的不同,快照隔离级别是如何工作的,恢复选项、目录视图、隔离级别及其实现,并细致涵盖了元数据视图、数据库快照、用户/架构分离、大数据对象存储、分区表和索引的存储、联机索引创建和重建、快照隔离和行级版本控制等SQL Server 2005新特性。本书适合所有希望深入了解SQL Server 2005核心引擎内部运行原理的研究人员、设计师、开发者和数据库管理员(DBA),还有高等院校中研究方向为数据库的本科高年级学生和研究生。如果您是数据库方面的专业人士,那么我建议您可以直奔主题,直接阅读您所感兴趣的章节;如果您对自己的专业知识不是很有信心,那么建议您在第一遍阅读时可以不求甚解,快速浏览本书。因为各个章节其实是环环相扣的,联系起来看可以帮助理解。然后再读第二遍、第三遍,相信每读一遍您都会有巨大的收获。

本书的翻译工作历时四个半月,不是我们这些译者懒惰,而是因为翻译工作完全是利用晚上和周末的业余时间完成的。不过现在回想起来,这些日子里除了夜夜青灯的辛苦,一杯香茗字斟句酌译佳作的经历也不失为一种乐趣。本书的第3、7、8章是方磊先生翻译的,第6章是由揭磊骏先生完成的,第2章是由我和方磊先生共同翻译的,其余各个章节和正文以外的部分均由我执笔。译稿的审阅由刘莹女士负责。我们合作得非常愉快。

本书的作者Kalen Delaney是世界范围内第一流的SQL Server产品专家,有着近20年丰富的培训和写作经验。将她的作品信、达、雅地呈现为中文,对我们来说实在是一个很大的挑战。在翻译过程中,我们一方面尽量保持原书的风格,尽量减少因翻译对原书质量的影响,对原书中的部分术语和疑难语句都查阅相关资料并仔细推敲,力求把翻译做到最好;另一方面,我们对所发现的原书上的一些排版和技术性的错误,在参考本书官方网站上的勘误表后都作了更正。尽管我们已经非常努力,但由于时间和水平有限,翻译中的错误和不当之处仍在所难免。欢迎大家对本书的翻译提出宝贵意见,您可以发送电子邮件到InsideSQL2005@gmail.com与我取得联系。

感谢博文视点公司编辑杨福川的邀请,与博文视点合作我感到非常愉快。感谢方磊、揭磊骏、刘莹,没有你们,我无法单独完成这项工作。最后,我还要特别感谢家人对我的工作的支持。

聂伟

2007年6月于上海

译序2

“如果将技术书籍与武侠小说中的武功秘籍做一个类比,那么本书就是修炼内功根基的宝典。”

这是一本随SQL Server一起发展和成长起来的经典图书。对于曾经从Inside SQL Server 2000入门并受益匪浅的我们来说,非常荣幸能够成为本书新作系列的译者之一,至今仍感到欣喜和激动。本书作为新作系列的其中一卷,它向读者深入地介绍了SQL Server 2005中的存储引擎。“工欲善其事,必先利其器”,相信通过本书的学习,能够帮助广大开发者、数据库管理员,以及与数据库相关的专业人士领悟到数据库设计与维护、灾难恢复、故障排除、存储引擎调优及并发控制的精髓所在,从而能够更好地使用SQL Server 2005,更大程度地发挥它的作用。

本书的特色在于其与众不同的视角:从存储引擎的设计原理出发讲述各个组件和新特性究竟是如何工作的。除此以外,还包括了一些官方文档中未记载的信息,如表和索引的分页内容、数据修改操作的内部机理、未正式公布的DBCC命令及跟踪标记等。另外,为了更好地帮助读者理解存储引擎的行为,作者Kalen Delaney还在通俗易懂的实例中展示了如何使用SQL Server 2005中新增的一大利器——各种动态管理对象去观察和追踪存储引擎的行为。如果你是一个喜欢追根溯源的人,那么请你一定不要错过这本宝典。

酒是越陈越香,学习原理的过程也是循序渐进而不可急功近利的。因此,我建议读者在完成第一遍阅读以后还能够将其作为案头常备,当遇到实际的问题时,拿出来翻一翻,一定会有新的收获。

由于本书及其前作在业内始终保持较高的声望,因此翻译这样一本“经典”确实让我们感到很有压力。因此,我们不敢马虎,力求完美。但是由于时间和水平有限,译文难免有不当之处。我们真诚地欢迎读者批评和指正。

方磊

2007年6月于上海

编辑推荐《Microsoft SQl Server 2005技术内幕:存储引擎》适合于专业数据库开发者、BI开发者、DBA和以SQL Server作为后台数据库的一般应用程序开发者。《Microsoft SQl Server 2005技术内幕:存储引擎》不仅适合SQL Server 2005的初级读者,也适合SQL Server 2005的中高级读者。读者可以从中获得最优的方法、务实的建议和实例代码来帮助他们掌握创建和维护企业级关系数据库所需的复杂技术。《Microsoft SQl Server 2005技术内幕:存储引擎》是所有SQL Server 2005用户的案头必备之书。

目录

前言I

致谢III

引言VII

第1章 SQL Server 2005 的安装与升级1

1.1 SQL Server 2005安装前提2

SQL Server 2005 版本3

软件要求4

硬件要求5

1.2 安装前决策7

安全性和用户上下文7

字符与排序规则9

排序次序11

安装SQL Server的多个实例15

安装SQL Server命名实例16

1.3 做好安装准备18

SQL Server 2005升级向导18

1.4 迁移还是升级20

迁移20

升级21

升级后的操作23

1.5 选择组件25

SQL Server数据库服务(数据库引擎)26

Analysis Services27

Reporting Services27

Notification Services27

Integration Services27

工作站组件、联机丛书及开发工具27

1.6 小结28

第2章 SQL Server 2005体系结构29

2.1 SQL Server引擎组件29

观测数据库引擎行为30

协议31

表格格式数据流(TDS)端点32

关系引擎33

存储引擎35

SQLOS39

2.2 内存49

缓冲池和高速数据缓冲区50

访问内存中的数据页50

管理数据高速缓冲区中的页面51

检查点53

管理其他高速缓存中的内存54

调节内存大小56

调节缓存池大小56

2.3 小结63

第3章 SQL Server 2005的配置65

3.1 使用SQL Server 配置管理器65

配置网络协议65

默认的网络配置66

管理服务67

3.2 系统配置67

任务管理67

资源分配68

系统分页文件的位置69

非必需的服务69

网络协议69

与SQL Server 早期版本之间的兼容性69

跟踪标记(Trace Flags)70

SQL Server 的配置设定70

内存选项72

调度选项(Scheduling Options)74

磁盘I/O 选项76

查询处理选项77

默认跟踪(Default Trace)83

3.3 小结85

第4章 数据库和数据库文件87

4.1 系统数据库88

master88

Model89

tempdb89

mssqlsystemresource89

msdb90

4.2 示例数据库90

AdventureWorks91

pubs91

Northwind91

4.3 数据库文件92

4.4 创建数据库94

一个创建数据库的实例96

4.5 增长和收缩数据库97

自动文件增长97

手动文件增长97

快速文件初始化98

自动收缩98

手动收缩98

4.6 使用数据库文件组101

默认文件组101

一个创建文件组的例子103

4.7 更改数据库104

ALTER DATABASE示例105

4.8 数据库的真面目106

空间分配106

检查数据库的一致性109

执行校验检查110

4.9 设置数据库选项115

状态选项117

游标(CURSOR)选项122

自动(AUTO)选项123

SQL 选项124

数据库恢复选项125

其他数据库选项127

4.10 数据库快照127

创建一个数据库快照127

数据库快照所使用的空间130

管理快照131

4.11 tempdb数据库132

tempdb中的对象132

tempdb中的优化134

最优方法135

tempdb空间监视136

4.12 数据库安全137

数据库访问138

管理数据库安全性140

数据库与架构(Schema)140

分离主体与架构141

默认架构141

4.13 移动或复制一个数据库142

分离和重新附加数据库143

备份和还原数据库144

移动系统数据库145

移动master数据库和Resource数据库146

4.14 兼容性级别147

4.15 小结148

第5章 日志和恢复149

5.1 事务日志简介149

恢复的各个阶段152

5.2 改变日志文件大小154

虚拟日志文件154

观察虚拟日志文件155

多个日志文件156

虚拟日志文件的自动截断157

维护可恢复的日志158

日志的自动收缩160

日志文件的大小161

5.3 读取日志162

5.4 数据库的备份和还原162

备份的类型163

恢复模型164

选择备份类型167

还原数据库168

5.5 小结174

第6章 表175

6.1 系统对象176

兼容性视图176

目录视图178

其他元数据180

6.2 创建表183

命名表和列183

保留关键字184

分隔标识符185

命名惯例186

数据类型186

关于NULL的琐事195

6.3 用户定义数据类型198

CLR数据类型200

6.4 IDENTITY属性200

6.5 内部存储203

sys.indexes目录视图204

数据存储元数据205

数据页面209

数据行的结构215

列偏移矩阵217

定长记录的存储217

变长记录的存储221

页面连锁224

行溢出数据224

大对象数据228

存在在数据行中的LOB数据230

varchar(MAX)数据的存储233

sysvariant的存储234

6.6 约束237

约束名和目录信息238

事务及多记录修改中的约束失败241

6.7 修改表242

更换一个数据类型242

增加一个新列243

添加/删除/禁用/启用一个约束243

删除一个列244

启用或禁用触发器245

对表进行修改的内部处理245

6.8 小结248

第7章 索引的内部构造和管理249

7.1 索引的构造250

聚集索引252

非聚集索引253

7.2 创建索引254

包含性列(Included Columns)257

索引的放置257

约束和索引258

7.3 索引分页的结构259

带有唯一标识符(Uniqueifier)的聚集索引行262

索引行的格式266

聚集索引的结点行267

非聚集索引的叶级行269

非聚集索引的结点行274

7.4 索引的空间需求275

B-树的大小275

实际大小 vs. 估计大小276

7.5 特殊索引280

先决条件280

SET 选项280

可允许的函数281

架构绑定(Schema Binding)282

基于计算列的索引282

使用COLUMNPROPERTY 函数283

计算列的实施283

持久化列(Persisted Columns)283

索引视图285

附加要求285

创建索引视图286

使用索引视图287

7.6 表和索引分区288

分区函数及分区方案288

关于分区的元数据290

分区的威力293

7.7 数据修改的内部机理296

插入行296

页拆分(Splitting Pages)296

拆分索引的根分页297

拆分中间级索引分页297

拆分数据分页297

删除行300

从堆中删除记录301

从B-树中删除记录303

删除索引结点级中的记录306

回收分页306

更新行306

移动行307

管理前转指针308

覆盖更新(Updating in Place)309

非覆盖更新(Updating Not in Place)309

表级数据修改 vs. 索引级数据修改311

日志记录313

锁定313

7.8 索引的管理314

修改索引(ALTER INDEX)314

碎片的种类315

碎片的检测316

碎片报告319

碎片的移除322

索引的重建325

联机索引创建326

7.9 索引的使用329

查找行329

联接329

排序329

分组(Grouping)329

保持唯一性330

7.10 小结330

第8章 锁定和并发331

8.1 并发控制模型332

悲观并发控制332

乐观并发控制332

8.2 事务处理332

ACID属性333

原子性(Atomicity)333

一致性(Consistency)334

隔离性(Isolation)334

持久性(Durability)334

隔离级别(Isolation Levels)336

未提交读(Uncommitted Read)336

已提交读(Read Committed)337

可重复读(Repeatable Read)337

快照(Snapshot)338

可串行化(Serializable)339

8.3 锁定(Locking)340

锁定的基本概念340

自旋锁(Spinlocks)341

用户数据的锁定类型341

锁的模式342

共享锁(shared locks)342

排他锁(exclusive locks)342

更新锁(update locks)342

意向锁(intent locks)343

特殊锁定模式343

转换锁(conversion locks)344

键范围锁(key-range locks)345

锁的粒度(lock granularity)345

键锁(key locks)347

另外的可锁定资源349

应用程序级锁(application lock)350

鉴别锁定资源352

关联实体ID(Associated Entity ID)353

锁的持续时间354

锁的所有权(Ownership)354

观察锁355

sys.dm_tran_locks355

锁定的实例358

8.4 锁兼容性364

8.5 锁定的内部架构365

锁分区(Locking Partitioning)367

锁块368

锁所有者块370

syslockinfo 表370

8.6 绑定连接(Bound Connections)372

使用绑定连接372

多个活动结果集(Multiple Active Result Sets)374

8.7 行级锁定 vs. 分页级锁定374

锁升级375

禁用锁升级376

死锁377

8.8 行版本控制381

行版本控制概述382

行版本控制详述382

基于快照的隔离级别383

已提交读快照隔离383

快照隔离385

快照隔离的范畴386

观察数据库的状态387

更新冲突388

数据定义语言(DDL)和快照隔离390

小结:基于快照的隔离级别393

版本存储区395

版本存储区的管理398

快照事务元数据398

并发模型的选择402

8.9 其他使用行版本控制的特性404

触发器和行版本控制404

MARS 和行版本控制405

8.10 锁定控制407

锁定提示(Lock Hints)407

设置锁定超时409

8.11 小结411

索引413

……[看更多目录]

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
更多商品
十二宫
阅世心语(季羡林著)
直面内心的恐惧:分裂、忧郁、强迫、歇斯底里四大人格心理分析
PHP5与MySQL5 Web开发技术详解(含光盘)
完全掌握AutoCAD2008-建筑篇(中文版)(含光盘)
机器学习及其应用2007
国际商务谈判
商务统计轻松学
天使部落格
跟徐湛学国画(DVD8碟装)
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有