SQL Server求生秘籍
作 者: (美)亨德森 主編,若啟,一輝,瞿傑 譯
出 版 社: 人民郵電出版社
出版時間: 2009-2-1
字 數: 554000
版 次: 1
頁 數: 342
1 開 本: 16開
印 次: 1
紙 張: 膠版紙
I S B N : 9787115191113
包 裝: 平裝
所屬分類: 圖書 >> 計算機>> 資料庫 >> SQL
定 價: ¥59.00
概述
編輯推薦
微軟SQL Server內部技術資料大曝光,來自SQL Server開發小組和支持部門的夢之隊打造,SQL Server故障排除聖經。
“本書的內容是其他任何部落格、網站和圖書都沒有的。系統出問題時。它將成為你的救命稻草。”
——Pinal Dave,微軟MVP
“此書得非常好,涵蓋了對大量複雜問題進行故障排查的詳細解析。我認為每一位優秀的MSSQL DBA都
——Amazon .com評論
資料庫技術人員都不免面臨這樣的困境:每隔一段時日,資料庫系統就會因為一些奇怪的問題無法正常運作,然而由於缺乏底層信息,他們常常無法應對這些問題。
本書的出版將徹底改變這種局面。微軟技術大師Henderson邀請了微軟資料庫產品開發和支持團隊的多位資深工程師,各展所長,第一次集中公開了許多以前在微軟內部口口相傳的SQL Sewer技術機密。全書由10章組成,每一章都首先精闢地剖析SQL Sewer的一個關鍵內部機制。然後深入探討常見的問題及其解決方案,包括等待與阻塞、記憶體、快取、查詢處理、Service Broker、tempdb和群集等主題。書中討論了許多底層數據結構,詳細解釋了大量錯誤日誌、棧轉儲的含義。很多內容都是直接查看SQL Sewer原始碼總結提煉出來的,參考價值不言而喻。
內容簡介
本書幫助你解決眾多資料庫引擎方面的問題,每一章從關鍵的SQL Server 組件入手,然後探討用戶遇見的常見問題,並給出解決方案。本書的主要內容包括等待和阻塞、數據毀壞和恢復、記憶體、過程快取、查詢進程等。本書的作者都是來自微軟公司SQL Server 開發團隊和客戶支持服務部門的支持專家。在你的SQL Server 系統遇到問題時,本書將變得不可或缺。
本書適合資料庫管理員和資料庫開發人員閱讀。
作者簡介
Ken Henderson(1967-2008)SQL Sewer世界級權威。生前供職於微軟SQL Sewer開發組。以Guru's Guide系列經典著作和SQLDiag等工具享譽業界。
創作團隊 來自SQL Server開發小組的7位開發人員和來自微軟客戶支持服務機構的3位支持專家,他們都有豐富的開發經驗,熟悉SQL Sewer原始碼。
目錄
第1章 等待和阻塞
1.1 等待類型
1.2 對阻塞問題進行故障排查
1.3 識別阻塞
1.3.1 通過sys .dm_os_waiting_tasks來識別阻塞
1.3.2 從統計上識別阻塞
1.4 確定阻塞的原因
1.4.1 當前的語句和計畫
1.4.2 阻塞模式
1.4.3 阻塞鏈
1.5 資源類型的細節
1.5.1 閂鎖
1.5.2 鎖
1.5.3 外部等待類型
1.5.4 計時器和佇列等待類型
1.5.5 IO操作的等待類型
1.5.6 其他等待類型
1.6 死鎖
1.7 監視阻塞
1.7.1 等待的統計信息
1.7.2 當前的等待信息
1.8 小結
1.9 其他資源
第2章 數據損壞及恢復
2.1 基本原理
2.2 SQL Server 2005存儲內幕
2.2.1 資料庫及檔案狀態
2.2.2 資源資料庫
2.2.3目錄視圖和基本系統表
2.2.4 分配結構
2.2.5 資料庫校驗和
2.2.6 快速恢復
2.2.7 延期事務
2.2.8 唯讀的壓縮資料庫
2.3 SQL Server 2005增強
2.3.1 備份增強
2.3.2 還原增強
2.3.3DBCC CHECKDB增強
2.4 數據恢復最佳實踐
2.4.1 備份/還原最佳實踐
2.4.2 資料庫及日誌最佳實踐
2.4.3 DBCC CHECKDB最佳實踐
2.5 數據恢復故障排查場景
2.5.1 系統資料庫恢復
2.5.2 恢復資源資料庫
2.5.3 創建tempdb故障
2.5.4 重裝作業系統
2.6 用戶資料庫不可訪問
2.6.1 資料庫被標記為RECOVERY_PENDING
2.6.2 處理延遲事務
2.6.3 資料庫被標記為SUSPECT
2.6.4 貼上資料庫故障
2.7 BACKUP/RESTORE故障
2.7.1 BACKUP故障
2.7.2 RESTORE故障
2.8 資料庫一致性錯誤
2.8.1 處理資料庫一致性運行時錯誤
2.8.2 處理DBCC CHECKDB錯誤
2.8.3 修復與還原
2.8.4 每個錯誤表示什麼
2.8.5 解釋
2.8.6 用戶動作
2.8.7 REPAIR_ALLOW_DATA_LOSS真正的意思是什麼
2.8.8 進行恢復之前的根本原因分析
2.8.9 如果修復沒有用,應該怎么辦
2.8.10 複製數據與修復
2.8.11 找出損壞的根本原因:清單
第3章 記憶體
3.1 Windows記憶體管理入門
3.1.1 內部的虛擬記憶體——虛擬地址空間
3.1.2 外部虛擬記憶體
3.1.3 內部物理記憶體
3.1.4 外部物理記憶體
3.1.5 記憶體壓力
3.1.6 NUMA支持
3.2 SQLOS和SQL Server的記憶體管理
3.2.1 記憶體結點
3.2.2 記憶體clerk
3.2.3 記憶體對象
3.2.4 記憶體快取
3.2.5 緩衝池
3.2.6 故障排查
第4章 過程快取
4.1 過程快取的架構
4.1.1 快取對象的類型
4.1.2 過程快取的結構
4.1.3 過程快取和記憶體
4.1.4 非快取計畫和零成本計畫
4.1.5 計畫的共享
4.1.6 重編譯
4.1.7 參數化
4.1.8 快取查找如何工作
4.1.9 快取計畫復用
4.1.10 刷新過程快取
4.2 常見快取相關問題及解決方案
4.2.1 使用過程快取來確定代價昂貴的查詢
4.2.2 參數截取
4.2.3 較差的計畫復用造成較高的編譯時間
4.2.4 由於過度的快取查找時間導致的高CPU問題
4.2.5 由過程快取所引起的記憶體壓力
4.3 小結
第5章 查詢處理器
5.1 查詢處理器基礎
5.1.1 編譯—執行序列
5.1.2 執行計畫
5.1.3 查詢編譯和計畫選擇
5.1.4 特殊的最佳化方法及場景
5.2 常見問題
5.2.1 編譯時間和參數化
5.2.2 索引化
5.2.3 基數和開銷估算
5.3 故障排查
5.3.1 診斷
5.3.2 控制
5.4 最佳實踐
5.4.1 使用面向集合的編程模型
5.4.2 提供約束和統計的信息
5.4.3 注意複雜的構造
5.4.4 儘可能地避免動態語言特性
5.5 進階閱讀
第6章 伺服器崩潰和其他致命故障
6.1 基礎知識
6.1.1 SQL Server 2005伺服器恢復內幕
6.1.2 SQL Server 2005的增強特性
6.2 致命錯誤與伺服器恢復故障排查
6.2.1 伺服器啟動故障排查
6.2.2 對伺服器致命錯誤進行故障排查
6.2.3 伺服器掛起問題的故障排查
第7章 Service Broker相關問題
7.1 Broker總覽
7.1.1 為什麼要使用Service Broker
7.1.2 Service Broker的對象和術語
7.1.3 內部架構
7.2 主要的診斷工具和方法
7.2.1 傳輸佇列視圖
7.2.2 SQL Profiler——Service Broker跟蹤事件
7.2.3 錯誤日誌和NT事件日誌
7.3 Broker故障排查實踐
7.4 其他Service Broker診斷工具
7.4.1 視圖
7.4.2 Perfmon
7.4.3 DBCC CHECKDB
7.5 進階閱讀
第8章 SQLOS和調度問題
8.1 SQLOS架構
8.1.1 記憶體和CPU結點
8.1.2 調度器
8.1.3 任務和worker
8.1.4 SQL Server和SQLOS
8.2 配置和故障排查
8.2.1 結點配置
8.2.2 網路連線關聯
8.2.3 調度器
8.2.4 任務與worker
8.2.5 調度器之間的負載均衡任務
8.2.6 Max Worker Threads配置
8.2.7 Lightweight Pooling配置
8.2.8 Affinity Mask配置
8.2.9 磁碟I/O完成處理
8.2.10 搶占式I/O完成處理
8.2.11 調度器監視器
8.2.12 硬體配置
8.2.13 專用管理員連線
8.3 進階閱讀
第9章 tempdb相關問題
9.1 SQL Server 2005中有何改進
9.1.1 tempdb日誌檔案的IO動作少了
9.1.2 tempdb數據檔案自動增長更快
9.1.3 改進tempdb的並行訪問的可擴展性
9.1.4 改進tempdb中多個檔案的可擴展性
9.2 tempdb空間是如何使用的
9.2.1 什麼是用戶對象
9.2.2 什麼是內部對象
9.2.3 什麼是版本存儲對象
9.3 故障排查實踐
9.3.1 如果tempdb空間不足,你該怎么辦
9.3.2 什麼是tempdb頁面閂鎖競爭
9.4 小結
第10章 群集問題
10.1 示例
10.2 工具
10.3 將性能調整到可接受的水平上
10.3.1 添加結點
10.3.2 為什麼群集SQL Server實例發生故障轉移
10.3.3 為什麼故障轉移要花這么長時間
10.3.4 故障轉移之後沒人可以連線
10.3.5 添加磁碟
10.3.6 替換磁碟
10.3.7 轉移資料庫
10.4 小結
書摘插圖
第8章 SQLOS和調度問題
Sameer Tejani
本章內容
● SQLOS架構
● 配置及故障排查
● 進階閱讀
當今的電腦架構日益多樣化,並且難以發揮其最大性能及可擴展性。昨天的研究成果今天就被廣泛套用到行業中。看看早些年,多處理器計算機非常罕見。而今,多CPU不再是大企業的特權了。市面上已經有多核CPU了,家用電腦也擁有了多處理器特性。可以預見在未來市場中,擁有多個CPU和大量記憶體的計算機將成為主流。像非統一記憶體訪問(Non-Uniform Memory Access,簡稱cc-NUMA)之類的計算機架構的市場份額將持續增長。一些處理器廠商已經為CPU構建了私有記憶體匯流排,從而在低端架構上開啟cc-NUMA。
企業級硬體設計的趨勢變得更戲劇化。今天的企業計算機與之前的超級計算機看起來差不多。現在有64個CPU和512GB記憶體的計算機不再稀奇。如按現在的趨勢發展下去,很快256個物理/邏輯CPU及1TB以上記憶體的配置將統治企業級裝置。隨著CPU數量的增長,硬體廠商越來越偏向於cc-NUMA架構,而不是對稱多處理(Symmetrical Multi-Processing,SMP)。現今的市場中,cc-NUMA計算機已經成為廠商在開發16個以上CPU的平台時的標準。追求大記憶體和多CPU並不是企業級市場上唯一的趨勢。硬體廠商正嘗試最小化系統宕機時間,並通過引入對熱插拔記憶體和CPU的支持來擴展其系統的靈活性。熱插拔使得系統管理員可以隨心所欲地重新配置硬體,而不用重啟系統。
處理能力和可用的記憶體數據持續按照摩爾定律的速度增長,但記憶體訪問延遲沒能跟上這個步伐。硬體廠商一直致力於改善CPU記憶體處理能力。他們構建了多層快取,並對指令級並發、弱一致性模型以及預存取增加了更多支持。
對於正在設計面向性能的、提供彈性管理支持的可伸縮應用程式的軟體工程師來說,理解並利用這些特性變得非常重要。
為了充分利用這一新規範,我們引入了一個新的層——SQLOS,以便將作業系統從SQL Server引擎中抽象出來,並提供服務以最大限度利用這些架構,同時保留現有架構。SQLOS對伺服器的其他部分提供用戶級的作業系統服務,這就是“SQLOS”名稱的由來。SQL Server引擎中的組件利用SQLOS提供的服務,來調度單個或者多個任務、分配記憶體等。