《SQL Server 2012 深入解析与性能优化 第3版 SQL Server 数据库经典译丛》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:(美)波尔顿等著;胡克宁译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2013
  • ISBN:9787302342311
  • 页数:490 页
图书介绍:本书在透彻理解SQL Server和Windows内核机理的基础上,深入介绍了解决性能问题的最佳实践,演示了经验丰富的DBA如何确保可靠的性能。本书作者为读者演示了如何掌握具体故障排除工具的使用,以及如何解释它们的输出,从而可以快速识别和解决所有运行SQL Server的服务器的任何性能问题。

第Ⅰ部分 内核 3

第1章 SQL Server体系结构 3

1.1 简介 3

1.2 数据库事务 4

1.2.1 ACID属性 4

1.2.2 SQLServer事务 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.4 SQL Server的执行模式和SQLOS 21

1.4.1 执行模式 22

1.4.2 SQLOS 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.1 Intel处理器 33

2.3.2 AMD处理器及编号 41

2.4 为冗余选择及配置硬件 43

2.5 硬件比较工具 45

2.5.1 TPC-E基准 45

2.5.2 Geekbench基准测试 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.4 NUMA 55

3.3 SQL Server内存 59

3.3.1 内存节点 60

3.3.2 内存分配员、缓存和缓冲池 60

3.4 优化SQL Server内存配置 66

3.4.1 最小服务器内存和最大服务器内存 66

3.4.2 锁定内存页 68

3.4.3 即席式工作负荷优化 70

3.5 本章小结 72

第4章 存储系统 73

4.1 简介 73

4.2 SQL Server I/O 74

4.3 存储技术 74

4.3.1 SQLServer和Windows I/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.8 Windows故障转移群集 89

4.3.9 SQL Server AlwaysOn可用性组 90

4.3.1 0风险缓解计划 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.7 NTFS分配单元大小 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.2 Algebrize 108

5.3 查询优化 109

5.3.1 并行计划 110

5.3.2 Algebrizer树 111

5.3.3 sql_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.1 A是原子性 146

6.2.2 C是一致性 147

6.2.3 I是隔离性 147

6.2.4 D是持久性 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.6 Halloween效应 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.1 NL 191

7.6.2 KP 191

7.6.3 SH 191

7.6.4 UP 191

7.6.5 EX 191

7.6.6 DT 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.3 tempdb中的更新闩锁 203

7.9.4 名称解析中的自旋锁争用 204

7.1 0本章小结 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.1 tempdb的文件布局 229

8.4.2 tempdb的初始大小和自动增长 231

8.4.3 配置多个tempdb数据文件 234

8.5 本章小结 234

第Ⅱ部分 故障排除工具和实战经验 239

第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.2 SQL Server 2012在PerfMon中新添的计数器 259

10.2.3 PerfMon入门 262

10.3 性能监视器使用进阶 271

10.3.1 瓶颈和SQL Server 272

10.3.2 规范性指南 273

10.3.3 等待统计信息分析 278

10.3.4 获得性能基准 278

10.4 日志性能分析 278

10.5 其他PerfMon日志分析工具 282

10.5.1 通过SQL Server分析PerfMon日志 282

10.5.2 结合PerfMon日志和SQL Profiler跟踪 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章 通过SQL Nexus整合一切 315

12.1 介绍SQLNexus 315

12.2 熟悉SQLNexus 316

12.2.1 先决条件 316

1 2.2.2 将数据加载到Nexus数据库中 318

12.2.3 分析聚合数据 321

12.3 自定义SQL Nexus 329

12.3.1 使用ReadTrace.exe 330

12.3.2 为SQL Nexus建立自定义报表 331

12.3.3 使用命令提示符运行SQL Nexus 331

12.3.4 在SQL Nexus数据库中创建自己的表格 331

12.3.5 编写自己的查询 333

12.3.6 OSTRESS可执行文件 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 Server 2012 339

13.1 介绍扩展事件 339

13.2 熟悉扩展事件 340

13.3 使用扩展事件的原因 340

13.3.1 SQL Server路线图 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 在SQL Server 2012中创建扩展事件 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.1 PowerShell环境 369

14.2.2 基础知识—cmdlet、变量、高级函数和模块 371

14.2.3 远程工作 377

14.2.4 SQL Server 2012中的新功能 377

14.3 使用PowerShell来调查服务器问题 380

14.3.1 查询磁盘空间利用率 380

14.3.2 查询当前服务器活动 381

14.3.3 查询警告或者错误信息 383

14.3.4 查询服务器性能 383

14.4 主动使用PowerShell调试SQL Server性能 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.1 SQL Server健康检查的重要性 393

15.2 运行DMV和DMF查询 394

15.3 SQL Server Build 396

15.4 数据库级别的查询 414

15.5 本章小结 430

第16章 提供可管理性和性能 431

16.1 用SQL Server可管理性功能提高效率 431

16.2 SQLServer2012中的可管理性增强功能 432

16.3 基于策略的管理 432

16.4 其他管理SQL Server的微软工具 446

16.4.1 系统中心顾问 446

16.4.2 系统中心操作管理器 448

16.5 本章小结 451

第17章 在虚拟环境中运行SQL Server 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.4 SQL Server 2012和虚拟化 459

17.3.5 虚拟化的局限性 460

17.4 常见的虚拟化产品 461

17.4.1 VMware 461

17.4.2 微软Hyper-V 462

17.4.3 Xen 463

17.4.4 对虚拟化的硬件支持 463

17.5 虚拟化概念 463

17.5.1 主机服务器 464

17.5.2 管理程序 464

1 7.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