Inside Microsoft SQL Server 2005:
 The Storage Engine

 Kalen Delaney/著
 Microsoft出版
 售價:1,700元
 Amazon五顆星


若論微軟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的最佳方式。

了解SQL Server的最重要著作
由於SQL Server 2005大幅改版,新增大量功能,使得以往出書速度還蠻快的Inside SQL Server系列,這次讓大家從SQL Server 2005上市後等了近兩年才出版。也由於功能繁多,原本就極為厚重的Inside SQL Server再也無法以單行本出書,而改為4本合集的系列叢書。

在此介紹其中一本《Inside Microsoft SQL Server 2005:The Storage Engine》,執筆者為先前Inside SQL Server各版本的作者Kalen Delaney,在此次Inside系列討論SQL Server 2005的4本書中,她改任系列編輯(Series Editor),並於本書擔任作者。

一翻開書籍前頁,看到Kalen Delaney的致謝,立即對本書的嚴謹要求與參與人力嘆為觀止。大概很少書是原廠產品團隊派一群人伺候,提供技術諮詢還要兼審稿,外加微軟出版社的編輯審稿,並有作者所在公司同事的相助。或許,討論SQL Server這類大型產品的書籍還真需要人脈廣、經驗足才能撰寫。

筆者長年在各企業間解決SQL Server的問題,例如功能不會用、效能不佳、不穩、不安全等,深覺最主要的原因是使用者對產品的了解不夠。尤其一般使用者對SQL Server存有誤解,以為SQL Server不需要專業的學習與管理,而像Office等產品一般隨意架設使用。

若執行起來效能不佳,便認定產品本身的能力不足,其實不然,SQL Server在臺灣,乃至於世界各地都已經進入企業的關鍵系統,數以兆(tera)計的資料量比比皆是。而我們所欠缺的是深入的知識與經驗,以發揮SQL Server所提供的各種功能。此書便是鑽研SQL Server設計原理的最佳管道。

盡窺資料庫引擎之堂奧
相信久用資料庫的管理與開發人員大都熟悉資料庫、資料表或索引的建置、交易的管理,但SQL Server資料庫儲存引擎(Storage Engine)實際上如何完成你的要求,卻諱莫如深。這本書將讓你知其然也知其所以然。

書中除了解釋設計理念與運作原理外,還輔之以測試驗證的方式。因此本書蘊含了許多官方文件沒有說明的技巧,例如查詢特定的動態管理檢視、執行各種DBCC指令:DBCC IND、DBCC PAGE、各種追蹤旗標等。藉以解釋SQL Server如何使用CPU、記憶體、硬碟與網路等硬體資源,資料表、索引頁、交易紀錄的結構,資料在新增、修改、刪除的過程中,對實體存放的影響,交易與鎖定的運作原理等。

由於分成4冊,由Kalen Delaney主寫的本書章節不多,僅有8章。鎖定在描述資料引擎的基礎運作,例如資料庫的設定與資料實際在硬碟的擺放、索引結構、交易與鎖定等。

由於SQL Server 2005提供了非常多的服務,如Database Services、Analysis Services、Reporting Services、Notification Services、Integration Services等,讓筆者覺得SQL Server像一個品牌了,有如Office一樣,其下涵蓋了非常多個別的產品。

再加上一堆的版本,如Enterprise、Evaluation、Standard、Workgroup、Developer、Express,還有32或64位元的差異,讓安裝SQL Server變得複雜。一般新入手的使用者恐怕連需要安裝哪些服務、各安裝步驟的意義、對其後系統執行時的影響都一知半解。本書的第一章從安裝與升級開始談起,可見得SQL Server 2005 的安裝都變得有學問了。

章節導覽
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 系列叢書中,當下買得到的尚有:

●《Inside Microsoft SQL Server 2005 : T-SQL Querying》。Itzik Ben-Gan、Lubor Kollar、Dejan Sarka/著。微軟出版。

●《Inside Microsoft SQL Server 2005 : T-SQL Programming》。Itzik Ben-Gan、Dejan Sarka、Roger Wolter/著。微軟出版。

●本書的相關網址:www.insidesqlserver.com/,及其系列書籍的相關網址www.sql.co.il/books/insidetsql2005/。若你不欲購買本書,或可在該網站逛逛。

《作者簡介》胡百敬
現任職恆逸資訊教育訓練處資深講師,聯經數位、睿智資訊與臺灣微軟技術顧問。著有《SQL Server 2005 SSIS 整合服務》等書,並為專欄作家。

熱門新聞

Advertisement