书评 -- Inside Microsoft SQL Server 2005 : The Storage Engine
Posted on 2007-12-17 10:15 csdnexpert 阅读(115) 评论(0) 编辑 收藏 举报若论微软 SQL Server 最重要著作,大概非 Inside SQL Server 系列丛书莫属了,从 SQL Server 6.5 以来,一直常驻在专业 SQL Server DBA 案头的,就是对应各版本的这本书。这不是笔者的妄加赞誉,而是素有信息界诺贝尔奖称呼的图灵奖(Turing Award)得主 Jim Gray 在该书的序言所说的。
笔者本身也以读过该书,代表进入了该版本的世界(例如要熟悉 SQL Server 2000,先读 Inside SQL Server 2000),以此为深入了解 SQL Server 的指标。而值此年终之际,稍有空闲时日,能专心拜读此书实是精通 SQL Server 的最佳方式J
由于 SQL Server 2005 大幅改版,大量地新增功能,让以往出书速度还蛮快的 Inside SQL Server 系列;这次叫大家从 SQL Server 2005 上市后等了一年。也由于功能繁多,原本极为厚重的 Inside SQL Server 再也无法以单行本出书,而改为四本合集的系列丛书[1]。在此介绍其中的一本「Inside Microsoft SQL Server 2005 : The Storage Engine」,执笔者为先前 Inside SQL Server 各版本的作者 Kalen Delaney,在此次 Inside 系列讨论 SQL Server 2005 的四本书中,她改任系列编辑(Series Editor),并于本书担任作者。
一翻开书籍前页,看到 Kalen Delaney 的致谢,立即对本书的严谨要求与参与人力叹为观止。大概很少书是原厂产品团队派一群人伺候,提供技术咨询还要兼审稿,外加微软出版社的编辑审稿,并有作者所在公司同事的襄助。或许,讨论 SQL Server 这类大型产品的书籍还真需要人脉广,经验足才能撰写[2]。
笔者长年在各企业间解决 SQL Server 的问题,例如功能不会用、效能不佳、不稳、不安全等,深觉最主要的原因是用户对产品的了解不够。尤其一般使用者存有误解,以为 SQL Server 不需要专业的学习与管理,像 Office 等产品,随意架设使用。若执行起来效能不佳,便认定产品本身的能力不足。其实不然,SQL Server 在台湾,乃至于世界各地都已经进入企业的关键系统,数以兆(tera)计的数据量比比皆是。而我们所欠缺的是深入的知识与经验,以发挥 SQL Server 所提供的各种功能。此书便是钻研 SQL Server 设计原理的最佳管道。
数据库引擎之堂奥
相信久用数据库的管理与开发人员大都熟悉数据库、数据表或索引的建置,交易的管理,但 SQL Server 数据库储存引擎(Storage Engine)实际如何完成你的要求,却讳莫如深。这本书将让你知其然也知其所以然。
书中除了解释设计理念与运作原理外,还辅之以测试验证的方式。因此本书蕴含了许多官方文件没有说明的技巧,如查询特定的动态管理检视、执行各种 DBCC 指令,如 DBCC IND、DBCC PAGE、各种追踪旗标…等。藉以解释 SQL Server 如何使用 CPU、内存、硬盘与网络等硬件资源,数据表、索引页、交易纪录的结构,数据在新增、修改、删除的过程中,对实体存放的影响,交易与锁定的运作原理等等。
由于分成了四册,由 Kalen Delaney主写的本书其章节不多,仅有八章。锁定在描述数据引擎的基础运作,例如数据库的设定与数据实际在硬盘的摆放,索引结构,交易与锁定等。
由于 SQL Server 2005 提供了非常多的服务,如 Database Services、Analysis Services、Reporting Services、Notification Services、Integration Services 等,让笔者觉得 SQL Server 像一个品牌了,有如 Office 一样,其下涵盖了非常多个别的产品。再加上一堆的版本,如 Enterprise、Evaluation、Standard、Workgroup、Developer、Express[3],还有 32 或 64 位的差异,让安装 SQL Server 变得复杂。一般新入手的使用者恐怕连需要安装哪些服务,各安装步骤的意义,对其后系统执行时的影响都一知半解。本书的第一章从安装与升级开始谈起,可见得 SQL Server 2005 的安装都变得有学问了J
SQL Server 的数据库服务由多个组件所组成,可大分为协定存取层、关联引擎(Relational Engine,一般也称为查询处理器 Query Processor)、储存引擎、SQL 核心等部份。本书的第二章先概略介绍这些组件的定位,好让读者知道本书所讨论的重点:储存引擎,在整体 SQL Server 数据库服务中所占的位置。
SQL Server 服务器实例和数据库皆提供了相当多的设定,但由于预设的设定已经符合大多数的使用情境,因此 SQL Server 管理师们大都不会深究这些设定。但随着使用人数增多,数据量增大,安全需求提高,这些设定就变得重要。本书的第三章和第四章详细解说了这些设定。另外,SQL Server 2005 所新增的 Database Snapshot、Schema 等功能也是本章的重点。
为维护数据更新时的完整性,SQL Server 透过放在硬盘上的交易纪录(transaction log)先行记载变更,再批次更新到数据文件中。但又为了执行效率与稳定,必须设计一系列精细的运作。而管理者需要熟悉这些运作,以提供足够的硬盘空间,并设计数据库备份的策略。本书第五章探讨了交易纪录的运作方式,连带剖析备份还原的设计。
数据表是实际存放数据的地方,也就是一切存取的核心。如何有效地切割数据字段,精确地使用数据格式,设定各种维护数据正确性的条件约束(Constraint)…等等,都是数据库管理师和程序设计人员所需要谨慎考虑的。本书第六章详细解释了数据实际在硬盘上的摆放方式,各种数据型态对储存的影响,以及修改既有的数据表设计。
索引是有效使用数据库引擎最重要的议题之一,但建立与维护索引并不是容易的事,索引建少了,查询效率不好,建多了,危害新增、修改、删除。什么字段该建,是否要对计算字段、检视建索引?建立索引将耗掉多少硬盘资源等,都是数据库管理师所必备的知识。本书第七章占据了全书最大的篇幅,详细解释了索引的组织结构,丛集(Clustered)和非丛集(Nonclustered)索引的差异、数据切割(Partition)、SQL Server 建置和维护索引的方式,管理者应注意的数据不连续与索引重整等议题。
当多人或多个批作业同时存取相同范围的数据时,交易与锁定的管理就变得很重要。SQL Server 2005 在此版加入了「纪录版本(row versioning)」功能,本书作者称为乐观并行(Optimistic concurrency),而称呼经由资源锁定的并行处理为悲观并行(Pessimistic concurrency)。SQL Server 2000以前的版本仅支持悲观并行。「纪录版本」保留纪录最后完成交易的值,供用户查询,让查询的工作不影响修改的工作,反之亦然。而不像以往透过资源锁定的方式,在默认的交易层级下,正在读的纪录不能改,正在改的纪录不能读。而不管是哪一种并行处理,本书第八章都提供了深入的解释,这是多人同时存取时,效能好坏的关键因素之一。
本书不是入门书,不会一步步导引你操作。若你尚不了解 SQL Server,玩得不深,本书可能就沉重了些。而就算你是专业的 SQL Server 管理师,我相信本书依然是蛮难啃的。因为作者解释的大都是 SQL Server 底层的运作原理,少有操作讲解。为了解释,在书中提供像字典似的列表,并辅之以示意图。读起来枯燥无味,但面临问题时,是深入探究的起点。
虽然章节间没有必然关系,但整本书所设计的顺序还是从基础到衍生,因此从第一章看起是比较好的。快速浏览过各章节的内容后,在实际工作时,碰到需要深入研究的问题,再回来温习书中所解释的原理。对于读不懂的章节不要沮丧,大部分的人应该都跟你一样,待更有经验且有空时,重新读过,相信会有不同的收获。
若你已经是 SQL Server 2000 的高手,这本书依然适用,但可能会缺乏耐心逐字阅读,因为部分内容是与 2000 重迭的。仍劝你浏览与精读并用,遇到熟知的部分快速翻阅,但读到 2005 新增的部份,就需要手脑并用了,既详读文章,且在 SQL Server 2005 上操作一遍,以确认真的读通了。
相关阅读
除了本书外,Inside Microsoft SQL Server 2005 系列丛书中,当下买得到的尚有
l Inside Microsoft SQL Server 2005 : T-SQL Querying。作者:Itzik Ben-Gan、Lubor Kollar 和 Dejan Sarka。微软出版社出版。
l Inside Microsoft SQL Server 2005 : T-SQL Programming。作者:Itzik Ben-Gan、Dejan Sarka、Roger Wolter。微软出版社出版。
本书的相关网址:http://www.insidesqlserver.com/,及其系列书籍的相关网址http://www.sql.co.il/books/insidetsql2005/。若你不欲购买本书,或可在该网站逛逛。
[1] Inside SQL Server 2005 系列的另外两本书名,笔者列在文章的结尾。而 Inside Microsoft SQL Server 2005: Query Tuning and Optimization 这一本似乎还没上市。
[2] 虽提供帮助的人数众多,但本书依然有着许多勘误,Kalen 有详列在书籍的网站上。可见得要撰写一本无误的技术书籍还真困难。
[3] 此为书中所列的版本,在微软网站上还可以看到 Mobile 和 Compact 等其他版本。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1449976