书籍详情
SQL Server 2005 Performance Tuning性能调校
作者:胡百敬,姚巧玫,刘承修
出版社:电子工业出版社
出版时间:2008-06-01
ISBN:9787121062964
定价:¥80.00
购买这本书可以去
内容简介
数据库系统经年累月地运行,日久便可能面临数据累积量大、使用人数增加、应用面扩增、当初系统设计有局限等问题,导致性能变差,这就需要调试人员进行性能调校。然而,他们进行性能调校的能力是需要培养的,一般来说,需要的不只是数据库方面的知识和经验,还要对商业领域知识、系统架构设计、应用程序撰写,以及对操作系统、网络环境架设、各种监控工具程序等都有一定的了解,才能在复杂的系统中,找到症结所在,完成调校任务。本书正是为满足上述需要而编写的,适合SQL Server DBA阅读,书中提供了性能调校和错误处理的建议与提示,并通过实际案例,协助DBA建立正确的观念、充分了解系统架构,进而在阅读中传承功力,并打通任督二脉,领略其中运用之奥妙。
作者简介
暂缺《SQL Server 2005 Performance Tuning性能调校》作者简介
目录
第1章 性能调校概观 1
1.1 什么是性能调校 4
1.2 建立性能的基线 5
1.3 性能调校的步骤——DETECT 8
1.3.1 各阶段重点说明 9
1.3.2 练习DETECT方法 12
1.3.3 二分查找 14
1.3.4 定义瓶颈 15
1.4 结语 16
第2章 SQL Server架构简介 19
2.1 SQL Server运行架构 20
2.1.1 SQL Server的访问架构 24
2.1.2 SQL Server 的核心引擎 27
2.1.3 SQL Server动态自我管理 30
2.2 各项硬件使用剖析 32
2.2.1 内存管理 33
2.2.2 中央处理器 50
2.2.3 磁盘子系统 57
2.3 仿真系统运行 63
2.4 结语 65
第3章 性能调校相关工具程序 67
3.1 综观的工具 71
3.1.1 SQLDiag 公用程序概述 71
3.1.2 观察影响效率的内容 96
3.1.3 性能监视器 101
3.2 进一步的分析工具 111
3.2.1 Management Studio 111
3.2.2 SQL Profiler概述 117
3.3 针对特定对象的工具 135
3.3.1 Database Engine Tuning Advisor 135
3.3.2 查询编辑器 138
3.3.3 网络监视器 141
3.3.4 DBCC 146
3.3.5 跟踪标记 152
3.4 Performance Dashboard Reports 155
3.4.1 SQL Server 2005 Performance Dashboard Reports 155
3.4.2 Performance Dashboard Reports 主要的分析途径 161
3.4.3 Performance Dashboard Reports 所提供的各式报表 164
3.4.4 Blocking 报表 166
3.4.5 General Wait 报表 166
3.4.6 其他细节报表 168
3.4.7 扩展Performance Dashboard Reports 报表功能 169
3.5 压力测试工具程序 174
3.5.1 Microsoft Application Center Test 175
3.5.2 Load Simulator 178
3.5.3 自行编写压力测试程序 181
3.6 结语 184
第4章 动态管理视图和函数 185
4.1 动态管理视图和函数简介 186
4.2 动态管理视图和函数的使用范例 188
4.3 观察各种资源的使用情况 196
4.3.1 内存缓存区 196
4.3.2 CPU 的使用 198
4.3.3 执行计划重用 202
4.3.4 锁定与被锁定的关系 203
4.3.5 I/O 的使用 206
4.3.6 tempdb 系统数据库的使用 208
第5章 数据库设计 213
5.1 数据库设计 214
5.2 使用分割数据表切割和平行运行 222
5.2.1 分割数据表的使用范例 224
5.2.2 分割数据表与大量数据加载的集成 234
5.3 TEMPDB 系统数据库的规划 235
5.3.1 tempdb 的用途 235
5.3.2 SQL Server 2005 针对tempdb 所做的改良 237
5.3.3 监控tempdb 的使用 238
5.3.4 性能考虑 240
5.4 备份与还原 242
5.4.1 数据库恢复模式 242
5.4.2 数据库恢复模式之间的切换 246
5.5 大量数据加载 247
5.6 设计磁盘子系统 251
5.7 结语 257
第6章 索引 259
6.1 索引概观 261
6.1.1 建立索引与相关的属性设置 262
6.1.2 平行建立索引 269
6.1.3 在线索引 271
6.1.4 集群索引与非集群索引 274
6.1.5 排序 278
6.1.6 与索引相关的系统视图 282
6.1.7 是否值得建索引 295
6.2 索引维护 304
6.2.1 观察数据不连续 304
6.2.2 使用动态管理函数观察数据不连续 308
6.2.3 重组、重建与停用索引 310
6.3 优化执行计划的各阶段 312
6.4 统计 314
6.4.1 更新统计 321
6.5 覆盖索引 326
6.6 在视图与计算字段上建立索引 331
6.6.1 如何有效地建立Indexed View 334
6.6.2 Indexed View的适用范围 340
6.7 单一查询使用多个索引 341
6.8 结语 342
第7章 T-SQL语法 343
7.1 有效地查询参数 344
7.1.1 不要对数据域做运算 345
7.1.2 勿负向查询 347
7.1.3 勿在Where 子句对字段使用函数 348
7.1.4 小心使用OR 操作 350
7.2 连接 352
7.2.1 连接 352
7.2.2 Join 语句 353
7.2.3 嵌套循环连接 357
7.2.4 合并连接 357
7.2.5 哈希连接 358
7.2.6 连接与子查询 360
7.3 其他注意事项 363
7.3.1 INSERT、DELETE 和UPDATE 365
7.3.2 子查询 366
7.3.3 搭配EXISTS与IN的子查询 368
7.3.4 通过连接更新数据 370
7.3.5 查询提示 374
7.4 新的DML语句 379
7.4.1 Common Table Expression 379
7.4.2 获取排名或顺序的函数 388
7.5 SQL Server 提供的公共变量 395
7.6 结语 404
第8章 重用执行计划 405
8.1 编译与高速缓存执行计划 406
8.2 影响计划重用的因素 414
8.3 执行计划与Execution Context 419
8.4 观察执行计划的使用 420
8.5 需要重新编译计划 423
8.5.1 不同参数使用相同执行计划可能引发的问题 426
8.5.2 以提示影响查询引擎所建立的执行计划 428
第9章 交易与锁定管理 435
9.1 锁定 436
9.1.1 锁定的种类及范围 436
9.1.2 锁定的兼容性 440
9.1.3 可锁定的资源 441
9.1.4 锁定与交易隔离等级 443
9.1.5 动态的锁定管理 457
9.1.6 锁定逾时 458
9.2 数据行版本控制 460
9.2.1 数据行版本控制基本运行行为 461
9.2.2 “数据行版本控制”使用时机 469
9.2.3 “数据行版本控制”TEMPDB 数据库资源管理 470
9.3 交易 472
9.3.1 交易行为概述 472
9.3.2 批处理与交易 475
9.3.3 嵌套交易 480
9.3.4 存储点 485
9.3.5 锁定提示 488
9.3.6 使用交易之注意事项 492
9.4 死锁状况 494
9.4.1 发生Cycle 死锁 494
9.4.2 发生Conversion 死锁 495
9.4.3 分布式死锁 496
9.4.4 SQL Server 无法侦测的死锁实例 498
9.5 观察与分析系统的锁定状况 502
9.5.1 观察SQL Server 当前执行的状况 503
9.5.2 观察与分析系统的锁定状况 509
9.6 锁定的原因及相关处理 512
9.6.1 费时的查询或交易 512
9.6.2 不正确的交易或交易隔离等级设置 514
9.6.3 交易未正确处理 514
9.6.4 未检测到的分布式死锁 515
9.6.5 锁定数据粒度(Lock Granularity)太高或太低 516
9.6.6 Compile Blocking 516
9.6.7 基本原则 517
9.7 结语 519
第10章 前端应用程序设计 521
10.1 程序架构 522
10.2 用户端与SQL服务器的交互 524
10.2.1 用户端访问SQL Server 的模式 527
10.2.2 准备再执行的模式 531
10.2.3 测试各种执行SQL 语句方式的性能 535
10.2.4 Connection Pooling 536
10.3 多数据结果集 545
10.3.1 SQL Server 数据访问与结果集 546
10.3.2 工作阶段内容信息与MARS 546
10.3.3 前端程序经由MARS访问 548
10.3.4 MARS的执行方式 554
10.3.5 同时读取与更新数据 556
10.4 光标 561
10.4.1 光标概观 562
10.4.2 默认结果集 564
10.4.3 服务器端光标 566
10.4.4 使用光标的T-SQL语句 571
10.4.5 与光标相关的系统存储过程 583
10.4.6 通过前端程序访问四种类型的光标 585
10.4.7 异步使用光标 589
10.4.8 使用光标时应注意的事项 592
10.5 数据高速缓存 605
10.5.1 使用高速缓存的原因 605
10.5.2 .NET Framework 与Microsoft patterns & Practices Enterprise Library
提供的高速缓存 608
10.5.3 访问Caching Application Block 612
10.6 应用程序错误处理 620
第11章 Visual Studio 2005 Team Edition For Database Professional 625
11.1 DB Pro 所支持的功能 626
11.2 建立数据库项目并控制对象的SQL Script 629
11.2.1 建立项目 630
11.2.2 将数据库定义加入源代码版本控制 634
11.3 建立数据库内新对象 636
11.3.1 部署项目定义到数据库 639
11.3.2 依项目内容更新数据库Schema 定义 643
11.4 修改数据库内对象名称 645
11.5 测试 647
11.5.1 产生测试数据 647
11.5.2 数据库的单元测试 651
11.5.3 数据库单元测试的方面 652
11.5.4 以DB Pro 设计与执行单元测试 652
11.5.5 通过测试条件定义单元测试的结果是成功或失败 661
11.5.6 负载测试 666
11.6 Service Release 1 与Power Tools 的功能 675
11.6.1 Power Tools 为VSTS Database Pro 新增的功能 681
附录A 数据库对象的命名惯例与访问标准 693
A.1 建立命名规则 694
A.2 数据库使用惯例 697
附录B 数据库服务器的容量规划 701
附录C 应用程序架构范例 707
1.1 什么是性能调校 4
1.2 建立性能的基线 5
1.3 性能调校的步骤——DETECT 8
1.3.1 各阶段重点说明 9
1.3.2 练习DETECT方法 12
1.3.3 二分查找 14
1.3.4 定义瓶颈 15
1.4 结语 16
第2章 SQL Server架构简介 19
2.1 SQL Server运行架构 20
2.1.1 SQL Server的访问架构 24
2.1.2 SQL Server 的核心引擎 27
2.1.3 SQL Server动态自我管理 30
2.2 各项硬件使用剖析 32
2.2.1 内存管理 33
2.2.2 中央处理器 50
2.2.3 磁盘子系统 57
2.3 仿真系统运行 63
2.4 结语 65
第3章 性能调校相关工具程序 67
3.1 综观的工具 71
3.1.1 SQLDiag 公用程序概述 71
3.1.2 观察影响效率的内容 96
3.1.3 性能监视器 101
3.2 进一步的分析工具 111
3.2.1 Management Studio 111
3.2.2 SQL Profiler概述 117
3.3 针对特定对象的工具 135
3.3.1 Database Engine Tuning Advisor 135
3.3.2 查询编辑器 138
3.3.3 网络监视器 141
3.3.4 DBCC 146
3.3.5 跟踪标记 152
3.4 Performance Dashboard Reports 155
3.4.1 SQL Server 2005 Performance Dashboard Reports 155
3.4.2 Performance Dashboard Reports 主要的分析途径 161
3.4.3 Performance Dashboard Reports 所提供的各式报表 164
3.4.4 Blocking 报表 166
3.4.5 General Wait 报表 166
3.4.6 其他细节报表 168
3.4.7 扩展Performance Dashboard Reports 报表功能 169
3.5 压力测试工具程序 174
3.5.1 Microsoft Application Center Test 175
3.5.2 Load Simulator 178
3.5.3 自行编写压力测试程序 181
3.6 结语 184
第4章 动态管理视图和函数 185
4.1 动态管理视图和函数简介 186
4.2 动态管理视图和函数的使用范例 188
4.3 观察各种资源的使用情况 196
4.3.1 内存缓存区 196
4.3.2 CPU 的使用 198
4.3.3 执行计划重用 202
4.3.4 锁定与被锁定的关系 203
4.3.5 I/O 的使用 206
4.3.6 tempdb 系统数据库的使用 208
第5章 数据库设计 213
5.1 数据库设计 214
5.2 使用分割数据表切割和平行运行 222
5.2.1 分割数据表的使用范例 224
5.2.2 分割数据表与大量数据加载的集成 234
5.3 TEMPDB 系统数据库的规划 235
5.3.1 tempdb 的用途 235
5.3.2 SQL Server 2005 针对tempdb 所做的改良 237
5.3.3 监控tempdb 的使用 238
5.3.4 性能考虑 240
5.4 备份与还原 242
5.4.1 数据库恢复模式 242
5.4.2 数据库恢复模式之间的切换 246
5.5 大量数据加载 247
5.6 设计磁盘子系统 251
5.7 结语 257
第6章 索引 259
6.1 索引概观 261
6.1.1 建立索引与相关的属性设置 262
6.1.2 平行建立索引 269
6.1.3 在线索引 271
6.1.4 集群索引与非集群索引 274
6.1.5 排序 278
6.1.6 与索引相关的系统视图 282
6.1.7 是否值得建索引 295
6.2 索引维护 304
6.2.1 观察数据不连续 304
6.2.2 使用动态管理函数观察数据不连续 308
6.2.3 重组、重建与停用索引 310
6.3 优化执行计划的各阶段 312
6.4 统计 314
6.4.1 更新统计 321
6.5 覆盖索引 326
6.6 在视图与计算字段上建立索引 331
6.6.1 如何有效地建立Indexed View 334
6.6.2 Indexed View的适用范围 340
6.7 单一查询使用多个索引 341
6.8 结语 342
第7章 T-SQL语法 343
7.1 有效地查询参数 344
7.1.1 不要对数据域做运算 345
7.1.2 勿负向查询 347
7.1.3 勿在Where 子句对字段使用函数 348
7.1.4 小心使用OR 操作 350
7.2 连接 352
7.2.1 连接 352
7.2.2 Join 语句 353
7.2.3 嵌套循环连接 357
7.2.4 合并连接 357
7.2.5 哈希连接 358
7.2.6 连接与子查询 360
7.3 其他注意事项 363
7.3.1 INSERT、DELETE 和UPDATE 365
7.3.2 子查询 366
7.3.3 搭配EXISTS与IN的子查询 368
7.3.4 通过连接更新数据 370
7.3.5 查询提示 374
7.4 新的DML语句 379
7.4.1 Common Table Expression 379
7.4.2 获取排名或顺序的函数 388
7.5 SQL Server 提供的公共变量 395
7.6 结语 404
第8章 重用执行计划 405
8.1 编译与高速缓存执行计划 406
8.2 影响计划重用的因素 414
8.3 执行计划与Execution Context 419
8.4 观察执行计划的使用 420
8.5 需要重新编译计划 423
8.5.1 不同参数使用相同执行计划可能引发的问题 426
8.5.2 以提示影响查询引擎所建立的执行计划 428
第9章 交易与锁定管理 435
9.1 锁定 436
9.1.1 锁定的种类及范围 436
9.1.2 锁定的兼容性 440
9.1.3 可锁定的资源 441
9.1.4 锁定与交易隔离等级 443
9.1.5 动态的锁定管理 457
9.1.6 锁定逾时 458
9.2 数据行版本控制 460
9.2.1 数据行版本控制基本运行行为 461
9.2.2 “数据行版本控制”使用时机 469
9.2.3 “数据行版本控制”TEMPDB 数据库资源管理 470
9.3 交易 472
9.3.1 交易行为概述 472
9.3.2 批处理与交易 475
9.3.3 嵌套交易 480
9.3.4 存储点 485
9.3.5 锁定提示 488
9.3.6 使用交易之注意事项 492
9.4 死锁状况 494
9.4.1 发生Cycle 死锁 494
9.4.2 发生Conversion 死锁 495
9.4.3 分布式死锁 496
9.4.4 SQL Server 无法侦测的死锁实例 498
9.5 观察与分析系统的锁定状况 502
9.5.1 观察SQL Server 当前执行的状况 503
9.5.2 观察与分析系统的锁定状况 509
9.6 锁定的原因及相关处理 512
9.6.1 费时的查询或交易 512
9.6.2 不正确的交易或交易隔离等级设置 514
9.6.3 交易未正确处理 514
9.6.4 未检测到的分布式死锁 515
9.6.5 锁定数据粒度(Lock Granularity)太高或太低 516
9.6.6 Compile Blocking 516
9.6.7 基本原则 517
9.7 结语 519
第10章 前端应用程序设计 521
10.1 程序架构 522
10.2 用户端与SQL服务器的交互 524
10.2.1 用户端访问SQL Server 的模式 527
10.2.2 准备再执行的模式 531
10.2.3 测试各种执行SQL 语句方式的性能 535
10.2.4 Connection Pooling 536
10.3 多数据结果集 545
10.3.1 SQL Server 数据访问与结果集 546
10.3.2 工作阶段内容信息与MARS 546
10.3.3 前端程序经由MARS访问 548
10.3.4 MARS的执行方式 554
10.3.5 同时读取与更新数据 556
10.4 光标 561
10.4.1 光标概观 562
10.4.2 默认结果集 564
10.4.3 服务器端光标 566
10.4.4 使用光标的T-SQL语句 571
10.4.5 与光标相关的系统存储过程 583
10.4.6 通过前端程序访问四种类型的光标 585
10.4.7 异步使用光标 589
10.4.8 使用光标时应注意的事项 592
10.5 数据高速缓存 605
10.5.1 使用高速缓存的原因 605
10.5.2 .NET Framework 与Microsoft patterns & Practices Enterprise Library
提供的高速缓存 608
10.5.3 访问Caching Application Block 612
10.6 应用程序错误处理 620
第11章 Visual Studio 2005 Team Edition For Database Professional 625
11.1 DB Pro 所支持的功能 626
11.2 建立数据库项目并控制对象的SQL Script 629
11.2.1 建立项目 630
11.2.2 将数据库定义加入源代码版本控制 634
11.3 建立数据库内新对象 636
11.3.1 部署项目定义到数据库 639
11.3.2 依项目内容更新数据库Schema 定义 643
11.4 修改数据库内对象名称 645
11.5 测试 647
11.5.1 产生测试数据 647
11.5.2 数据库的单元测试 651
11.5.3 数据库单元测试的方面 652
11.5.4 以DB Pro 设计与执行单元测试 652
11.5.5 通过测试条件定义单元测试的结果是成功或失败 661
11.5.6 负载测试 666
11.6 Service Release 1 与Power Tools 的功能 675
11.6.1 Power Tools 为VSTS Database Pro 新增的功能 681
附录A 数据库对象的命名惯例与访问标准 693
A.1 建立命名规则 694
A.2 数据库使用惯例 697
附录B 数据库服务器的容量规划 701
附录C 应用程序架构范例 707
猜您喜欢