《Microsoft SQL Server企业级平台管理实践》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:徐海蔚编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2010
  • ISBN:9787121102448
  • 页数:489 页
图书介绍:本书是微软全球技术支持中心,数据库支持部技术主管的沥血之作,书中案例选自微软全球客户遇到的实际问题。本书的最大特点是面向实战,主要面向Microsoft SQL Server各个版本的数据库系统管理和开发人员,介绍SQL Server关系型数据库引擎在日常使用和开发过程中经常会遇到的问题、其表现形式、背后运行机理、基本理论知识、搜集和分析问题日志的方法,以及解决实际问题的可选手段。阅读本书可以帮助数据库管理与开发人员更深入地理解SQL Server的原理和运行规律,以提高解决问题的能力。

第1章 数据库空间管理 1

1.1 文件的分配方式及文件空间检查方法 2

1.1.1 数据文件分配 2

1.1.2 数据文件空间使用的计算方法 7

1.1.3 日志文件 9

1.1.4 Tempdb 10

1.1.5 案例:通过脚本监视tempdb空间使用 12

1.2 数据文件空间使用与管理 16

1.2.1 表和索引存储结构 17

1.2.2 比较存储结构对空间使用的影响 20

1.2.3 DELETE和TRUNCATE之间的区别(KB913399) 24

1.2.4 为什么DBCCSHRINKFILE会不起作用 26

1.3 日志文件不停增长 30

1.1.1 日志文件里到底有什么 31

1.3.2 日志文件增长的原因 33

1.3.3 案例:日志增长原因定位 34

1.4 文件自动增长和自动收缩 37

1.5 小结 40

第2章 数据库备份与恢复 41

2.1 备份概述 42

2.2 选择备份策略和恢复模式 44

2.2.1 简单恢复模式下的备份 45

2.2.2 完整恢复模式下的备份 47

2.2.3 文件或文件组备份 48

2.3 选择数据库还原方案 49

2.3.1 数据库完整还原 51

2.3.2 文件还原 52

2.3.3 页面还原 53

2.3.4 段落还原 55

2.3.5 还原方案小结 57

2.3.6 孤立用户故障排除 58

2.4 应对由于备份损坏导致的还原错误 59

2.5 系统数据库备份与恢复 61

2.5.1 master数据库 61

2.5.2 model数据库 63

2.5.3 msdb数据库 63

2.5.4 tempdb和资源数据库(Resource Database) 63

2.6 实例:将数据库系统在一台新服务器上恢复 65

第3章 SQL Server服务或数据库不可访问 69

3.1 SQL Server服务启动顺序 70

3.1.1 从注册表读取SQL Server启动信息 70

3.1.2 检测硬件,配置内存与CPU 74

3.1.3 初始化MS DTC 76

3.1.4 系统数据库启动 77

3.1.5 准备网络连接 78

3.1.6 启动msdb数据库和其他用户数据库 79

3.2 数据库状态切换及恢复(Recovery) 80

3.3 系统数据库不能启动的常见原因和解决方法 84

3.3.1 Master数据库不能启动 84

3.3.2 资源数据库 85

3.3.3 Model数据库 87

3.3.4 Tempdb数据库 88

3.4 用户数据库常见问题和解决方法 89

3.4.1 文件打开问题 90

3.4.2 恢复失败 92

3.5 实例:修复恢复失败的数据库 95

第4章 数据库损坏修复 99

4.1 常见错误解读 99

4.1.1 823 99

4.1.2 824 100

4.1.3 605 102

4.1.4 其他 102

4.2 DBCC CHECKDB 103

4.2.1 DBCC CHECKDB在做些什么 103

4.2.2 DBCC CHECKDB提供的修复方法 107

4.2.3 如何在超大数据库上运行DBCC CHECKDB 108

4.3 数据库反复损坏问题应对 110

4.3.1 SQL I/O操作方法 111

4.3.2 确保系统I/O正常 112

4.3.3 SQL Server层面能够做的设置 115

4.3.4 数据库镜像(Database Mirroring)的页面自动修复功能 117

第5章 连接与认证 119

5.1 协议的选择与别名 120

5.1.1 服务器网络配置 121

5.1.2 SQL Server Browser的作用 122

5.1.3 客户端网络配置 124

5.1.4 客户端网络连接选择机制 126

5.2 连接失败检测步骤——命名管道 128

5.3 连接失败检测步骤——TCP/IP 133

5.4 一般性网络错误(General Network Error) 138

5.5 认证与代理问题 143

5.5.1 SQL Server认证模式和密码管理 144

5.5.2 Windows认证模式(NTLM和Kerberos) 145

5.5.3 Delegation的配置要求 149

第6章 SQL Seorver内存分配理念和常见内存问题 157

6.1 从操作系统层面看SQL Server内存分配 159

6.1.1 Windows的一些内存术语 159

6.1.2 32位下Windows的地址空间及AWE 162

6.1.3 Windows层面上的内存使用检查 164

6.1.4 内存使用和其他系统资源的关系 169

6.1.5 SQL Server内存使用和Windows之间的关系 170

6.1.6 SQL Server内存使用量陡然下降现象 172

6.1.7 案例分析 174

6.1.8 如何“合理”配置SQL Server内存 176

6.2 SQL Server内部独特的内存管理模式 176

6.2.1 内存使用分类 178

6.2.2 各部分内存的分布和大小限制 180

6.2.3 一些内存使用错误理解 183

6.3 SQL Server内存使用状况分析方法 185

6.3.1 SQL Server性能计数器 186

6.3.2 内存动态管理视图(DMV) 188

6.4 数据页缓冲区压力分析 193

6.4.1 表现特征 194

6.4.2 确定压力来源和解决办法 197

6.4.3 如何发现内存使用比较多的语句 200

6.5 Stolen Memory缓存压力分析 204

6.5.1 Stolen缓存区与数据页缓存区的相互关系 205

6.5.2 内部压力与外部压力 205

6.5.3 表现特征与解决办法 206

6.6 Multi-page缓存区压力分析 207

6.6.1 内部压力与外部压力 208

6.6.2 Multi-page缓存区使用情况监测 210

6.7 常见内存错误与解决办法 210

6.7.1 错误701 211

6.7.2 错误8645 215

6.7.3 SQL Server无法创建新的线程 218

6.8 小结 219

第7章 SQL Server I/O问题 221

7.1 SQL Server的I/O操作 221

7.2 系统级I/O问题判断 227

7.3 数据库引擎错误833 229

7.4 I/O问题的SQL Server内部分析 231

7.5 硬盘压力测试 238

1.6 小结 243

第8章 任务调度与CPU问题 245

8.1 SQL Server独特的任务调度算法(SQLOS) 246

8.1.1 SQLOS的任务调度算法 247

8.1.2 任务调度健康监测及常见问题 251

8.1.3 案例分析 254

8.2 SOL Server CPU 100%问题 257

8.3 OLTP和Data Warehouse系统差别及常用性能阈值 262

8.3.1 OLTP系统 262

8.3.2 Data Warehouse系统 267

8.4 小结 271

第9章 阻塞与死锁——知识准备 273

9.1 锁产生的背景 274

9.2 锁资源模式和兼容性 276

9.3 事务隔离级别与锁的申请和释放 279

9.4 如何监视锁的申请、持有和释放 281

9.4.1 检查一个连接当前所持有的锁 282

9.4.2 监视语句执行过程中SQL Server对锁的申请和释放行为 283

9.5 锁的数量和数据库调优的关系 283

9.5.1 一个常见的SELECT动作要申请的锁 286

9.5.2 一个常见的UPDATE动作要申请的锁 290

9.5.3 一个常见的DELETE动作要申请的锁 292

9.5.4 一个常见的INSERT动作要申请的锁 293

9.6 结论 294

9.7 数据库引擎中基于行版本控制的隔离级别 295

第10章 阻塞与死锁——问题定位与解决 301

10.1 阻塞问题定位方法及实例演示 301

10.2 常见阻塞原因与解决方法 309

10.3 案例分析:连接池(Connection Pooling)与阻塞 315

10.3.1 连接池与SQL Server 315

10.3.2 正常情况下连接池在SQL Server端的处理方式 316

10.3.3 程序端意外情况下SQL Server端可能导致的问题(1):应用端超时 319

10.3.4 程序端意外情况下SQL Server端可能导致的问题(2):应用层事务未提交 322

10.4 死锁问题定位及解决方法 326

10.4.1 死锁所在的资源和检测 326

10.4.2 问题定位 327

10.4.3 解决办法 331

10.4.4 案例分析 333

第11章 从等待状态判断系统资源瓶颈 341

11.1 LCK_xx类型 342

11.2 PAGEIOLATCH_x与WRITELOG 343

11.3 PAGELATCH_x 345

11.4 Tempdb上的PAGELATCH 348

11.5 其他资源等待 350

11.6 最后一道瓶颈:许多任务处于runnable状态 352

11.7 小结 354

第12章 语句调优——知识准备 357

12.1 索引与统计信息 360

12.1.1 索引上的数据检索方法 360

12.1.2 统计信息的含义与作用 363

12.1.3 统计信息的维护和更新 367

12.2 编译与重编译 372

12.3 读懂执行计划 383

12.3.1 联接(Join) 387

12.3.2 其他常见的运算操作 394

12.4 读懂语句运行统计信息 397

12.4.1 Set statistics time on 397

12.4.2 Set statistics io on 399

12.4.3 Set statistics profile on 400

第13章 语句调优——问题定位与解决方法 405

13.1 是否是因为做了物理I/O而导致的性能不佳 406

13.2 是否是因为编译时间长而导致性能不佳 408

13.3 判断执行计划是否合适 411

13.3.1 预估cost的准确性 412

13.3.2 是Index Seek还是Table Scan 416

13.3.3 是Nested Loops还是Hash(Merge)Join 420

13.3.4 Filter运算的位置 421

13.3.5 确认问题产生的原因 423

13.4 Parameter Sniffing 425

13.4.1 什么是“Parameter sniffing” 426

13.4.2 本地变量的影响 427

13.4.3 Parametre Sniffing的解决方案 428

13.5 调整数据库设计来优化语句性能 436

13.5.1 调整索引 436

13.5.2 SQL Server Plan Guide(计划指南) 442

13.6 调整语句设计提高性能 448

13.6.1 筛选条件与计算字段 448

13.6.2 会在运行前改变值的变量 450

13.6.3 临时表和表变量 451

13.6.4 尽可能限定语句的复杂度 453

第14章 常用SQL Server系统信息与搜集方法 455

14.1 Windows事件日志(Event Log) 456

14.2 SQL Server Errorlog文件 457

14.3 性能监视器(Performance Monitor) 459

14.4 SQL Trace文件 463

14.4.1 SQL Trace文件的收集方法 463

14.4.2 SQL Trace文件的分析方法 470

14.4.3 自动化分析SQL Trace 472

14.5 系统管理视图跟踪 476

14.6 自动化信息收集:SQLDiag工具 479

14.7 系统自动监视工具——Performance Dashboard 482

参考资料 485

索引 487