《SQL Server 2012 深入解析與性能最佳化(第3版)》是2013年11月22日出版的圖書,作者是Christian Bolton、Justin Langford、Glem Berry、Gavin Payne、Amit Banerjee、Rob Farley 。
基本介紹
- 書名:SQL Server 2012 深入解析與性能最佳化(第3版)
- 作者:Christian Bolton、Justin Langford、Glem Berry、Gavin Payne、Amit Banerjee、Rob Farley
- 譯者:胡克寧
- ISBN:9787302342311
- 定價:68元
- 出版社:清華大學出版社
- 出版時間:2013年11月22日
- 裝幀:平裝
書籍信息,圖書目錄,
書籍信息
《SQLServer2012深入解析與性能最佳化(第3版)呈現大量專家建議和實例,指導您在透徹理解SQLServer和Windows內部原理的基礎上排除SQLServer2012故障。通過學習本書,您將能熟練使用具體的故障排除工具,並正確解釋工具的輸出結果,從而迅速地查找和排除SQLServer所在伺服器的各種性能問題。
主要內容
◆完整介紹查詢的生命周期,呈現實際環境中的SQLServer架構
◆介紹伺服器硬體和存儲系統,分析SQLServer如何使用記憶體以及正確的記憶體配置方式
◆探討查詢的處理和執行,講述鎖和tempdb資料庫的工作原理
◆分析如何使用故障排除工具針對系統範圍的性能問題收集數據、展開分析並找到根源
◆詳述如何使用PowerShell和擴展事件來增強故障排除工具集,以及如何在虛擬環境中管理SQLServer
主要內容
◆完整介紹查詢的生命周期,呈現實際環境中的SQLServer架構
◆介紹伺服器硬體和存儲系統,分析SQLServer如何使用記憶體以及正確的記憶體配置方式
◆探討查詢的處理和執行,講述鎖和tempdb資料庫的工作原理
◆分析如何使用故障排除工具針對系統範圍的性能問題收集數據、展開分析並找到根源
◆詳述如何使用PowerShell和擴展事件來增強故障排除工具集,以及如何在虛擬環境中管理SQLServer
圖書目錄
第I部分核心
第1章SQLServer體系結構 3
1.1簡介 3
1.2資料庫事務 4
1.2.1ACID屬性 4
1.2.2SQLServer事務 5
1.3一個查詢的生命周期 5
1.3.1關係引擎和存儲引擎 6
1.3.2緩衝池 6
1.3.3一個基本的Select查詢 7
1.3.4一個簡單的更新查詢 15
1.3.5恢復 17
1.4SQLServer的執行模式
和SQLOS 21
1.4.1執行模式 22
1.4.2SQLOS 24
1.5本章小結 25
第2章硬體揭秘 27
2.1硬體的重要性 27
2.2工作負荷如何影響硬體及
存儲考慮事項 28
2.2.1工作負荷的類型 28
2.2.2伺服器選型 30
2.2.3伺服器型號的演變 30
2.3處理器廠商的選擇 32
2.3.1Intel處理器 33
2.3.2AMD處理器及編號 41
2.4為冗餘選擇及配置硬體 43
2.5硬體比較工具 45
2.5.1TPC-E基準 45
2.5.2Geekbench基準測試 47
2.6本章小結 47
第3章理解記憶體 49
3.1簡介 49
3.2物理記憶體和虛擬記憶體 50
3.2.1物理記憶體 50
3.2.2最大支持的物理記憶體 51
3.2.3虛擬記憶體 51
3.2.4NUMA 55
3.3SQLServer記憶體 59
3.3.1記憶體節點 60
3.3.2記憶體分配員、快取和
緩衝池 60
3.4最佳化SQLServer記憶體配置 66
3.4.1最小伺服器記憶體和最大
伺服器記憶體 66
3.4.2鎖定記憶體頁 68
3.4.3即席式工作負荷最佳化 70
3.5本章小結 72
第4章存儲系統 73
4.1簡介 73
4.2SQLServerI/O 74
4.3存儲技術 74
4.3.1SQLServer和WindowsI/O
子系統 78
4.3.2選擇合適的存儲網路 80
4.3.3共享存儲陣列 82
4.3.4容量最佳化 82
4.3.5分層存儲 84
4.3.6數據複製 85
4.3.7遠程數據複製 88
4.3.8Windows故障轉移群集 89
4.3.9SQLServerAlwaysOn
可用性組 90
4.3.10風險緩解計畫 91
4.4測量性能 91
4.4.1存儲性能計數器 92
4.4.2磁碟驅動器性能 93
4.4.3順序磁碟訪問 96
4.4.4伺服器佇列 97
4.4.5檔案布局 97
4.4.6分區對齊 99
4.4.7NTFS分配單元大小 99
4.4.8快閃記憶體 100
4.4.9存儲性能測試 101
4.5本章小結 105
第5章查詢處理和執行 107
5.1簡介 107
5.2查詢處理 108
5.2.1分析 108
5.2.2Algebrize 108
5.3查詢最佳化 109
5.3.1並行計畫 110
5.3.2Algebrizer樹 111
5.3.3sql_handle和plan_handle 111
5.3.4理解統計信息 111
5.3.5計畫快取和重編譯 113
5.3.6影響最佳化 119
5.4查詢計畫 125
5.4.1查詢計畫操作符 128
5.4.2讀取查詢計畫 131
5.5執行查詢 135
5.6本章小結 143
第6章鎖和並發 145
6.1簡介 145
6.2事務 146
6.2.1A是原子性 146
6.2.2C是一致性 147
6.2.3I是隔離性 147
6.2.4D是持久性 147
6.3資料庫事務 147
6.3.1原子性 147
6.3.2一致性 147
6.3.3隔離性 148
6.3.4持久性 148
6.4並發的危險 149
6.4.1丟失更新 149
6.4.2髒讀 151
6.4.3不可重複讀 152
6.4.4幻影讀 154
6.4.5重複讀 157
6.4.6Halloween效應 158
6.5鎖 159
6.5.1監視鎖 159
6.5.2鎖資源 161
6.5.3鎖模式 163
6.5.4兼容性表 169
6.6鎖升級 170
6.7死鎖 171
6.8隔離級別 171
6.8.1可序列化 172
6.8.2可重複讀 173
6.8.3已提交讀 173
6.8.4未提交讀和NOLOCK 174
6.8.5快照 174
6.8.6已提交讀快照 174
6.9本章小結 175
第7章閂鎖和自旋鎖 177
7.1簡介 177
7.2症狀 178
7.2.1識別症狀 178
7.2.2檢測閂鎖爭用 179
7.2.3檢測自旋鎖爭用 180
7.2.4爭用指示器 181
7.3易受影響的系統 182
7.4了解閂鎖和自旋鎖 182
7.4.1定義 182
7.4.2閂鎖示例 183
7.5閂鎖類型 190
7.6閂鎖模式 190
7.6.1NL 191
7.6.2KP 191
7.6.3SH 191
7.6.4UP 191
7.6.5EX 191
7.6.6DT 191
7.6.7閂鎖兼容性 192
7.6.8授權順序 192
7.6.9閂鎖等待 193
7.7超閂鎖和子閂鎖 194
7.8監控閂鎖和自旋鎖 195
7.8.1動態管理視圖 195
7.8.2性能監視器 196
7.8.3擴展事件 198
7.9閂鎖爭用示例 199
7.9.1當聚集索引鍵是ID欄位
時的插入操作 199
7.9.2佇列 200
7.9.3tempdb中的更新閂鎖 203
7.9.4名稱解析中的自旋鎖爭用 204
7.10本章小結 205
第8章了解tempdb資料庫 207
8.1簡介 207
8.2概述和使用 208
8.2.1用戶臨時對象 208
8.2.2內部臨時對象 213
8.2.3版本存儲區 213
8.3常見故障排除 217
8.3.1閂鎖爭用 217
8.3.2監視tempdb的I/O性能 226
8.3.3空間問題故障排除 228
8.4配置最佳實踐 229
8.4.1tempdb的檔案布局 229
8.4.2tempdb的初始大小和
自動增長 231
8.4.3配置多個tempdb數據
檔案 234
8.5本章小結 234
第Ⅱ部分故障排除工具和實戰經驗
第9章故障排除方法論和實踐 239
9.1簡介 239
9.2處理問題 240
9.2.1成功排除故障的十個步驟 240
9.2.2行為和態度 242
9.2.3成功標準 242
9.2.4與利益相關者打交道 243
9.2.5服務水平協定 244
9.2.6聘請外界幫助 244
9.3定義問題 245
9.3.1識別問題的指導方針 245
9.3.2隔離問題 246
9.3.3性能瓶頸 247
9.4數據收集 249
9.4.1關注數據收集 250
9.4.2了解數據收集過程 250
9.4.3工具和實用工具 251
9.5數據分析 252
9.6驗證和實施解決方案 253
9.6.1驗證變更 253
9.6.2孤立地測試變更 254
9.6.3實施解決方案 254
9.7本章小結 254
第10章通過PerfMon和PAL工具
查看伺服器性能 255
10.1簡介 255
10.2性能監視器概述 256
10.2.1可靠性和性能監視器 257
10.2.2SQLServer2012在PerfMon
中新添的計數器 259
10.2.3PerfMon入門 262
10.3性能監視器使用進階 271
10.3.1瓶頸和SQLServer 272
10.3.2規範性指南 273
10.3.3等待統計信息分析 278
10.3.4獲得性能基準 278
10.4日誌性能分析 278
10.5其他PerfMon日誌分析工具 282
10.5.1通過SQLServer分析
PerfMon日誌 282
10.5.2結合PerfMon日誌和
SQLProfiler跟蹤 282
10.5.3使用Relog 283
10.5.4使用LogMan 284
10.5.5使用LogParser 285
10.6本章小結 285
第11章通過SQLdiag整合數據
收集 287
11.1數據收集的困境 287
11.2數據收集的方法 288
11.3熟悉SQLdiag 289
11.3.1在快照模式下使用
SQLdiag 290
11.3.2作為一個命令行工具
使用SQLdiag 291
11.3.3作為一個服務使用
SQLdiag 294
11.4使用SQLdiag配置管理器 297
11.4.1用Diag管理器配置
SQLdiag數據收集 298
11.4.2為SQLdiag配置添加
跟蹤過濾器 301
11.5使用最佳實踐 310
11.5.1更好地收集長期數據 310
11.5.2過濾噪音 311
11.5.3用SQLdiag進行警報
驅動的數據收集 314
11.6本章小結 314
第12章通過SQLNexus整合一切 315
12.1介紹SQLNexus 315
12.2熟悉SQLNexus 316
12.2.1先決條件 316
12.2.2將數據載入到Nexus
資料庫中 318
12.2.3分析聚合數據 321
12.3自定義SQLNexus 329
12.3.1使用ReadTrace.exe 330
12.3.2為SQLNexus建立
自定義報表 331
12.3.3使用命令提示符運行
SQLNexus 331
12.3.4在SQLNexus資料庫中
創建自己的表格 331
12.3.5編寫自己的查詢 333
12.3.6OSTRESS執行檔 334
12.4解決常見問題 335
12.4.1問題1 335
12.4.2問題2 335
12.4.3問題3 336
12.4.4問題4 336
12.5本章小結 337
第13章使用擴展事件診斷SQL
Server2012 339
13.1介紹擴展事件 339
13.2熟悉擴展事件 340
13.3使用擴展事件的原因 340
13.3.1SQLServer路線圖 341
13.3.2圖形工具 341
13.3.3低影響 341
13.3.4使用擴展事件的時機 342
13.4擴展事件的含義 342
13.4.1擴展事件名稱的來源 343
13.4.2擴展事件術語 343
13.5在SQLServer2012中創建
擴展事件 352
13.5.1介紹新會話窗體 352
13.5.2監控伺服器登錄 356
13.5.3用擴展事件監控頁拆分 357
13.5.4計算每個對象獲得鎖的
次數 358
13.5.5用T-SQL創建會話 360
13.6查看由擴展事件捕獲的數據 360
13.7本章小結 366
第14章使用PowerShell增強故障
排除工具集 367
14.1介紹PowerShell 367
14.2熟悉PowerShell 368
14.2.1PowerShell環境 369
14.2.2基礎知識——cmdlet、變數、
高級函式和模組 371
14.2.3遠程工作 377
14.2.4SQLServer2012中的
新功能 377
14.3使用PowerShell來調查
伺服器問題 380
14.3.1查詢磁碟空間利用率 380
14.3.2查詢當前伺服器活動 381
14.3.3查詢警告或者錯誤信息 383
14.3.4查詢伺服器性能 383
14.4主動使用PowerShell調試
SQLServer性能 384
14.4.1索引維護 384
14.4.2管理備份的磁碟空間
利用率 385
14.4.3使用SMO提取DLL 385
14.4.4計畫腳本執行 391
14.5本章小結 391
第15章提供SQLServer健康檢查 393
15.1SQLServer健康檢查的
重要性 393
15.2運行DMV和DMF查詢 394
15.3SQLServerBuild 396
15.4資料庫級別的查詢 414
15.5本章小結 430
第16章提供可管理性和性能 431
16.1用SQLServer可管理性
功能提高效率 431
16.2SQLServer2012中的
可管理性增強功能 432
16.3基於策略的管理 432
16.4其他管理SQLServer的
微軟工具 446
16.4.1系統中心顧問 446
16.4.2系統中心操作管理器 448
16.5本章小結 451
第17章在虛擬環境中運行
SQLServer 453
17.1向伺服器虛擬化轉變 453
17.2虛擬化概述 454
17.2.1虛擬化的歷史 455
17.2.2虛擬化的廣度 455
17.2.3平台虛擬化 456
17.2.4雲計算 457
17.3為何要虛擬化伺服器 457
17.3.1商業利益 457
17.3.2技術利益 458
17.3.3封裝 459
17.3.4SQLServer2012和
虛擬化 459
17.3.5虛擬化的局限性 460
17.4常見的虛擬化產品 461
17.4.1VMware 461
17.4.2微軟Hyper-V 462
17.4.3Xen 463
17.4.4對虛擬化的硬體支持 463
17.5虛擬化概念 463
17.5.1主機伺服器 464
17.5.2管理程式 464
17.5.3虛擬伺服器(或Guest
伺服器或者虛擬機) 465
17.6虛擬化的擴展功能 466
17.6.1快照 466
17.6.2高可用性特性 467
17.6.3線上遷移 467
17.6.4高可用虛擬伺服器 469
17.6.5主機和Guest群集 470
17.6.6使用虛擬化的高可用性
特性部署SQLServer 470
17.7管理爭用 471
17.7.1良性爭用 471
17.7.2惡性爭用 471
17.7.3按需分配記憶體 472
17.7.4加權 473
17.8確定虛擬化的候選者 474
17.8.1指導原則 474
17.8.2伺服器的工作負荷 474
17.8.3收集規模數據 475
17.8.4規模工具 476
17.8.5與性能無關的需求 476
17.9為成功的虛擬資料庫伺服器
設計架構 477
17.9.1為虛擬資料庫伺服器與
物理資料庫伺服器設計
架構 477
17.9.2虛擬資料庫伺服器設計 478
17.10監視虛擬資料庫伺服器 485
17.11本章小結 490