当前位置:首页 > 工业技术
SQL Server 2005性能调优
SQL Server 2005性能调优

SQL Server 2005性能调优PDF电子书下载

工业技术

  • 电子书积分:16 积分如何计算积分?
  • 作 者:(美)StevenWort,ChristianBolton著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2009
  • ISBN:9787302200871
  • 页数:513 页
图书介绍:本书从全新的视角来实现性能调校,全书共分4部分,包含如何使用SQL Server等待类型来找到资源瓶颈;如何去除瓶颈;预防措施,基线以及各种有用的工具;成功部署的最佳实践。
《SQL Server 2005性能调优》目录
标签:性能

第1部分 在问题发生时寻找瓶颈 3

第1章 性能调校 3

1.1 艺术还是科学 3

1.2 性能调校的科学 4

1.2.1 问题陈述 4

1.2.2 处理计划 6

1.2.3 数据收集 6

1.2.4 数据分析 7

1.3 应用性能调校 7

1.3.1 实例1:应用的速度慢 7

1.3.2 实例2:存储过程X的速度慢 8

1.3.3 工具 10

1.3.4 预防措施 13

1.4 小结 14

第2章 使用System Monitor监视服务器资源 15

2.1 为什么可能会需要System Monitor 15

2.2 何时应当使用System Monitor 16

2.3 Performance Monitor概述 16

2.4 开始使用System Monitor 18

2.5 运行System Monitor的影响是什么 22

2.5.1 对监视的影响进行管理 22

2.5.2 在恰当的时间,以恰当的持续时间进行捕获 23

2.6 System Monitor将生成多少数据 23

2.7 资源利用 24

2.8 识别瓶颈 25

2.8.1 定位内存瓶颈 25

2.8.2 发现磁盘瓶颈 26

2.8.3 识别CPU瓶颈 28

2.9 主动使用System Monitor 29

2.10 在64位系统上运行System Monitor 29

2.11 合并System Monitor日志和SQL Profiler跟踪 30

2.12 监视远程服务器 31

2.13 System Monitor的最佳实践 31

2.13.1 获得一个基线 31

2.13.2 保留性能日志 32

2.13.3 模式和趋势 32

2.13.4 经受糟糕性能的服务器 32

2.13.5 调校性能 32

2.13.6 采取主动 32

2.14 System Monitor计数器不见了应当怎么办 33

2.15 内置日志管理工具 34

2.15.1 LogMan 34

2.15.2 Relog 35

2.16 分析日志数据 35

2.16.1 LogParser 35

2.16.2 Performance Analysis of Logs 36

2.17 小结 37

第3章 使用System Monitor监视SQL Server资源 39

3.1 开始 40

3.2 性能问题的类型 40

3.2.1 基于配置的性能问题 40

3.2.2 于模式的性能问题 41

3.3 瓶颈的类型 42

3.4 内存瓶颈 43

3.4.1 内存瓶颈的类型 43

3.4.2 确认内存瓶颈 44

3.4.3 基于配置的内存瓶颈 45

3.4.4 基于模式的内存瓶颈 46

3.5 CPU瓶颈 46

3.5.1 确认CPU瓶颈 46

3.5.2 基于配置的CPU瓶颈 47

3.5.3 基于模式的CPU瓶颈 48

3.6 磁盘瓶颈 49

3.6.1 确认磁盘瓶颈 49

3.6.2 基于配置的磁盘瓶颈 50

3.6.3 基于模式的磁盘瓶颈 53

3.7 监视数据库镜像性能 55

3.8 监视Wait Statistics 55

3.9 典型性能问题 56

3.9.1 典型磁盘问题 56

3.9.2 内存 57

3.9.3 典型CPU问题 57

3.10 使用SQL Server来分析性能日志 59

3.11 联合Performance Monitor日志和SQL ProFiler跟踪 63

3.12 小结 64

第4章 SQL Server等待类型 65

4.1 SQL Server等待 65

4.2 体系结构 66

4.3 常见的或值得注意的资源等待类型 67

4.4 如何追踪等待 68

4.4.1 sys.dm_exec-requests:只提供会话级信息 68

4.4.2 sys.dm_os_waiting_tasks:所有等待任务 69

4.4.3 sys.dm_os_wait_stats:根据等待类型聚集时间 69

4.4.4 DMVStats 70

4.4.5 Performance Dashboard 71

4.4.6 等待统计实战 71

4.5 加锁与阻塞 77

4.5.1 并发性 77

4.5.2 事务 78

4.5.3 隔离级别 79

4.5.4 锁和加锁 80

4.5.5 数据行版本控制 83

4.5.6 对死锁进行监视 84

4.5.7 对阻塞锁进行监视 87

4.6 小结 89

第5章 使用SQL ProFiler寻找问题查询 91

5.1 设置跟踪的准备工作 91

5.1.1 检测“问题”陈述是否完备 91

5.1.2 寻找相关已知问题 92

5.1.3 以SQL Trace的术语进行思考 92

5.1.4 SQL Trace选项及思考 96

5.2 捕获阻塞事件 102

5.3 捕获Showplan XML数据 105

5.4 捕获死锁图 107

5.5 使用SQL Profiler识别长时间运行的查询 112

5.5.1 模拟一个场景及示例数据库 112

5.5.2 分析问题 112

5.5.3 设置 113

5.5.4 进行跟踪 115

5.5.5 分析和调校 116

5.5.6 案例总结 119

5.6 使用Profiler生成服务器端跟踪代码跟踪高成本查询 119

5.6.1 使用Profiler生成服务器端跟踪脚本 119

5.6.2 执行服务器端脚本 123

5.6.3 管理跟踪文件并分析跟踪数据 123

5.6.4 服务器端跟踪代码演示 127

5.6.5 案例总结 133

5.7 将Profiler Trace同System Monitor性能计数器数据关联起来 133

5.8 小结 135

第Ⅱ部分 通过调校去除瓶颈 139

第6章 选择和配置硬件 139

6.1 服务器瓶颈 139

6.1.1 内存 139

6.1.2 I/O 140

6.1.3 CPU 140

6.2 配置服务器 140

6.2.1 内存 142

6.2.2 I/O 149

6.2.3 CPU 158

6.3 小结 166

第7章 调校SQL Server配置 167

7.1 调整服务器级设置之前的考虑 167

7.2 检查当前SQL Server设置 168

7.2.1 使用SQL Server Management Studio检查服务器设置 168

7.2.2 使用脚本检查服务器设置 169

7.2.3 检查Advanced Settings并修改它们的值 170

7.3 重要的服务器设置:CPU.内存和I/O 171

7.3.1 CPU 171

7.3.2 内存 177

7.3.3 网络I/O 178

7.4 小结 181

第8章 调校模式 183

8.1 数据质量 183

8.1.1 规范化 183

8.1.2 反规范化 189

8.1.3 定义列 191

8.1.4 存储过程 205

8.1.5 触发器 209

8.2 数据性能 212

8.2.1 页 212

8.2.2 分区 215

8.2.3 并发性与加锁(以及阻塞) 218

8.2.4 锁 220

8.2.5 索引 222

8.3 小结 227

第9章 调校T-SQL 229

9.1 开局:优化器的策略 229

9.1.1 基于成本的优化 230

9.1.2 读取索引统计 230

9.1.3 Include Actual Execution Plan的误解 232

9.1.4 使用sp_helpindex来检查索引 232

9.2 中局:收集事实 232

9.2.1 查询计划 232

9.2.2 查询计划的实质 234

9.2.3 从计划高速缓存中检索查询计划 250

9.2.4 缓冲池 251

9.3 终局:对T-SQL进行性能调校 257

9.3.1 主要工具 257

9.3.2 实例的必备索引 259

9.4 使用新的方法来调校T-SQL 259

9.4.1 NOTIN和NOTEXISTS重写已经成为过去 259

9.4.2 通过将谓词在计划中推进到更深的位置进行重写 260

9.4.3 为中间结果使用临时表 262

9.4.4 SELECT语句中的用户定义函数 263

9.4.5 改造SELECT 265

9.5 调校T-SQL谓词 269

9.5.1 去除特定隐式转换 269

9.5.2 使用可搜索参数 271

9.6 使用索引调校T-SQL 274

9.6.1 最小化书签查找 274

9.6.2 对结果进行排序 276

9.6.3 处理编入索引的可空列 277

9.6.4 消除重复 278

9.7 调校T-SQL常见模式或惯用语 280

9.7.1 单元素SELECT语句 280

9.7.2 聚集和CTE 283

9.7.3 派生表和相关子查询 286

9.7.4 分页和排序 290

9.8 使用提示调校T-SQL语句 296

9.9 调校死锁和阻塞 299

9.9.1 阻塞 299

9.9.2 死锁 299

9.9.3 预防措施 300

9.10 对查询计划进化进行模拟压力测试 303

9.11 小结 306

第Ⅲ部分 使用工具来采取主动措施并建立性能基线 309

第10章 使用SQL Profiler捕获、测量、重放工作负荷 309

10.1 为了重放对工作负荷进行捕获 309

10.1.1 为了重放对工作负荷进行刻画 309

10.1.2 满足工作负荷重放的要求 311

10.1.3 捕获工作负荷 313

10.1.4 为了特殊需要在跟踪表中修改工作负荷 314

10.2 测量工作负荷性能 317

10.2.1 工作负荷的初步分析 317

10.2.2 用于工作负荷重放的新的性能参考 321

10.3 重放工作负荷 323

10.3.1 为案例场景生成工作负荷 325

10.3.2 场景1:验证性能改进 326

10.3.3 场景2:在不同环境中重放工作负荷并测量总体响应时间 329

10.3.4 场景3:在目标服务器上重放多个工作负荷 332

10.4 小结 337

第11章 调校索引 339

11.1 示例数据库 339

11.2 第1部分:索引回顾 341

11.2.1 B树 341

11.2.2 填充因子 342

11.2.3 聚簇索引 342

11.2.4 堆 344

11.2.5 非聚簇索引 345

11.2.6 统计 346

11.2.7 加索引的视图 350

11.3 第2部分:用DTA进行调校 350

11.3.1 使用DTA调校个别的查询 351

11.3.2 用于更新的索引 360

11.3.3 增加更新索引后重新评定插入 372

11.3.4 索引过多 375

11.3.5 调校工作负荷 378

11.4 第3部分:索引维护 380

11.4.1 监视索引碎片 380

11.4.2 删除碎片 381

11.5 第4部分:分区的表和索引 383

11.5.1 使用分区的表和索引的理由 383

11.5.2 分区的先决条件 384

11.5.3 创建分区的表 384

11.6 小结 394

第12章 存储的速度及健壮性 395

12.1 性能测试、压力测试和实际性能 395

12.1.1 性能测试 395

12.1.2 压力测试 396

12.1.3 实际性能 396

12.1.4 汇总 397

12.2 存储性能 397

12.2.1 存储性能测量工具 397

12.2.2 希望测量什么 398

12.2.3 测量I/O性能 400

12.2.4 使用SQLIO 408

12.3 存储的可靠性 434

12.3.1 SQLIOSim 434

12.3.2 使用SQLIOSim 434

12.3.3 SQLIOSim测试持续时间的最佳实践 437

12.3.4 运行其他测试 438

12.3.5 从命令行运行SQLIOSim 446

12.3.6 解释来自SQLIOSim的结果 446

12.4 小结 449

第13章 SQL Server 2005Performance Dashboard Reports 451

13.1 可支持性 451

13.1.1 目录视图 452

13.1.2 动态管理视图及函数 452

13.1.3 默认跟踪 453

13.1.4 困难 456

13.2 Performance Dashboard Reports 456

13.2.1 必要条件 457

13.2.2 安装Performance Dashboard Reports 457

13.2.3 运行Performance Dashboard Reports 460

13.2.4 架构 463

13.2.5 常见使用场景 465

13.2.6 局限性 469

13.3 相关链接 471

13.4 小结 471

第IV分 服务器性能的路线图 475

第14章 从一开始就为性能进行设计的最佳实践 475

14.1 理解性能需求 475

14.1.1 数据库将支持多少用户 476

14.1.2 用户/角色访问要求的本质 478

14.1.3 业务事务要求的吞吐量 479

14.1.4 软件应用程序的核心架构 481

14.2 为未知的性能评估模式 482

14.2.1 简化模式 483

14.2.2 单一用途表 483

14.2.3 单一用途列 484

14.2.4 消除不明确的空字段 486

14.2.5 基于ID的分区 487

14.2.6 为了性能进行反规范化 487

14.2.7 视图中函数的性能影响 489

14.3 为性能评估索引 490

14.3.1 不加思考/默认索引 490

14.3.2 简单访问模式索引 491

14.3.3 复杂访问模式索引 491

14.4 为评估建立基准 491

14.4.1 创建基准模式 491

14.4.2 从DMV中提取Object_ID级信息 492

14.4.3 捕获表吞吐量 492

14.4.4 监视索引使用 492

14.4.5 TempDB使用 493

14.4.6 捕获阻塞信息 494

14.4.7 监视高CPU使用 495

14.4.8 监视高I/O产生者 496

14.5 沟通性能问题 497

14.6 小结 498

第15章 成功的部署策略 499

15.1 预估 500

15.2 附加特性 501

15.3 高可用性以及灾难恢复 501

15.3.1 备份和恢复 502

15.3.2 集群 502

15.3.3 数据库镜像 503

15.3.4 日志传送 503

15.3.5 复制 503

15.4 负荷测试 504

15.5 管理变动 504

15.6 处理大的表 505

15.6.1 分区函数 506

15.6.2 分区方案 506

15.6.3 对表或索引进行分区 507

15.7 使用SQL Server Profiler进行调校 507

15.8 使用Database Engine Tuning Advisor进行调校 507

15.9 错误预估实际执行环境的后果 507

15.10 实际执行中的模式问题 508

15.11 避免通过修改代码来解决问题 509

15.11.1 查询 509

15.11.2 查询计划 510

15.11.3 Plan Guide 511

15.11.4 创建Plan Guide之后的查询计划 511

15.12 小结 513

相关图书
作者其它书籍
返回顶部