第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.1SQL Server的访问架构 24
2.1.2SQL Server的核心引擎 27
2.1.3SQL 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.1SQLDiag公用程序概述 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.5SQL 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 Libra提供的高速缓存 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.6Service Release l与Power Tools的功能 675
11.6.1Power Tools为VSTS Database Pro新增的功能 681
附录A数据库对象的命名惯例与访问标准 693
A.1建立命名规则 694
A.2数据库使用惯例 697
附录B数据库服务器的容量规划 701
附录C应用程序架构范例 707