大部分資料庫的使用情境:不懂電腦的使用者以及對資料庫一知半解的程式設計師,合力存取資料庫,加上一大堆軟硬體的零組件,所有東西的使用壽命長短不一,這種組合造成資料庫系統每隔一段時間就會冒出未知的問題,使得DBA(Data Base Administrator,資料庫管理師)的書架上,永遠缺少一本錯誤處理的書,以解決層出不窮的問題。

DBA需要知道為何一堆使用者會一起鎖死?又在等什麼資源?好端端的資料庫怎麼毀了?應該如何快速而正確地救回資料?資料庫為何啟動失敗? SQL errorlog檔案內的一大堆記錄是什麼意思?記憶體、CPU、硬碟、網路……等硬體資源是否夠用?多少才夠用?如何有效地使用?TempDB系統資料庫與效能有什麼關係?叢集伺服器是如何運作,又為何不運作?林林總總的問號,總是壓得DBA喘不過氣。

以微軟的SQL Server為例,所產生的問題,也總讓我們必須到處尋找解決方案,除了SQL Server線上說明、微軟官方網站之外,透過Google搜尋、討論區、部落格、教育訓練課程,甚至是口耳相傳的特定問題解法,都是有必要的方法。

這些錯誤處理的經驗,若能經由微軟的技術工程師研究、回答問題後,統整、累積並集結成書,是再好不過了,因為這樣才能兼顧理論與實務。

《SQL Server 2005 Practical Troubleshooting:The Database Engine》就是以此為動機所成書的。本書編者Ken Henderson在序言裡便開宗明義地說道,他只想請能讀到SQL Server原始程式碼、能單步除錯SQL Server的人撰寫,光看組成團隊的條件就可感受到,這是本很硬的技術書。

此書不是入門書,它是由多位微軟SQL Server開發團隊成員與技術支援工程師合作而成,與其說它是書,不如說它是白皮書(White Paper)的集合,因為章節間沒有連貫性,每位工程師只針對自己熟悉的領域撰寫一個章節。它是本好的參考書,內容詳實深入,但不容易引起你的興趣。

畢竟專業的工程師善於蒐集蛛絲馬跡、有耐心評估和解析大量的傾印(Dump),他們擅長寫程式碼,但不會說笑話和寫文章。

或許是定位在錯誤處理(Troubleshooting),這大概是我看過程式畫面擷取最少,但傾印數據最多的SQL Server技術書籍。

書中用各種方式倒出SQL Server記憶體中的資料結構,而後逐段說明。或是深入解釋Errorlog所代表的意義,乃至於Stack Dump的意涵。

書中涵蓋內容相當廣泛,從DBCC檢測資料庫的完整性、備份/還原的原理、發生鎖定(Lock)的原因、追蹤與處理、T-SQL語法的解析與執行計畫快取,乃至於快取計畫的優缺點。各種硬體的使用原理與瓶頸,以及Service Broker、Tempdb系統資料庫、叢集伺服器……等,都有精闢深入的解析。

10個章節各自獨立,而且分別由不同的工程師撰稿,由於內容偏重解說冷僻的原理,我相信從頭到尾硬啃這本書會是很痛苦的一件事。加上深入的理論如果沒有搭配實務解說加強記憶,即使讀過,事後也很容易忘記。

本書適合放在案頭,你有空而且心情好的時候,選個章節研究一下,或是遇到各類問題,例如資料庫掛掉、記憶體用盡、系統效率不佳時,再細心研讀相關的章節。

但畢竟預防勝於治療,如果在規畫、設計資料庫時,就能有紮實的技術實力,未來將可避掉或減輕SQL Server使用上發生的問題,而且在使用資料庫時,如果懂得如何觀察趨勢變化,也才能防患於未然。

本書主要是寫給SQL Server 2005 版本的管理者,若你僅管理SQL Server 2000或之前的版本,並不太適用。雖然許多原理概念在 SQL Server 2000便已經存在而且依然適用,但由於少了系統物件或工具程式,加上本身議題很深,讓你在缺乏相關資訊時,將變得難以吸收。

 

SQL Server 2005 Practical Troubleshooting:The Database Engine

Ken Henderson/著

Addison-Wesley出版

售價:54.99美元

Amazon四顆星

《作者簡介》

胡百敬

現任職恆逸資訊教育訓練處資深講師,Ascentn、睿智資訊與臺灣微軟技術顧問。著有《SQL Server 2005 T-SQL資料庫設計》等書,並為專欄作家。

熱門新聞

Advertisement