目 录 1
第1章绪论 1
1.1数据库管理系统的通用功能与系统组成 1
1.2 SQL Server2000 3
1.3 SQLServer 2000技术特色 4
1.4本书的各章安排与内容 5
参考文献 5
2.1 SQLServer的客户/服务器方式 6
第2章SQL Server的体系结构 6
2.1.1 网络程序库(Net-Library) 7
2.1.2用户态调度器(LserModeScheduler,UMS) 9
2.1.3开放数据服务(Open Data Services,ODS) 9
2.2关系引擎与存储引擎 10
2.3存取方法管理器 12
2.3.1行操作管理器与索引管理器 12
2.3.2页面管理器与文本管理器 14
2.4事务管理器 15
2.5锁管理器 16
2.6内存管理器 17
2.7.1 日志管理 18
2.7.2检查点操作 18
2.7事务日志与故障恢复 18
2.7.3恢复过程 19
2.7.4使用页面LSN的恢复技术 20
2.8 SQL内核与操作系统间的交互 21
2.8.1线程处理与对称多进程处理 22
2.8.2工者线程池 23
2.9本章小结 24
2.8.3磁盘I/O操作 24
参考文献 25
第3章数据库与数据库文件 26
3.1 SQLServer系统数据库 27
3.1.1 master数据库 27
3.1.2 model数据库 27
3.1.3 tempdb数据库 28
3.1.4 pubs数据库 28
3.1.6 msdb数据库 29
3.2数据库文件 29
3.1.5 Northwind数据库 29
3.2.1基本知识 30
3.2.2 SQLServer数据库文件 30
3.SQL Server数据库文件组 31
3.3.1默认的文件组 32
3.3.2使用多个文件 32
3.3.3利用文件组创建数据库的实例 33
3.4 SQL Server数据库文件结构 34
3.4.1基本知识 34
3.4.2 SQLServer用户数据库 35
3.4.3 SQLServer的空间分配 37
3.5数据库的备份与恢复 40
3.5.1备份类型 40
3.5.2恢复模式 41
3.6本章小结 43
参考文献 43
第4章表的物理存储 44
4.1内部存储概述 45
4.2.2数据页的格式 47
4.2.1 基本知识 47
4.2数据页 47
4.2.3 SQLServer的数据页 50
4.2.4检查数据页 52
4.3数据行的结构 56
4.3.1基本知识 56
4.3.2 SQLServer的数据行结构 58
4.3.3列偏移数组 60
4.SQL Server中定长和变长行的存储 60
4.4.1定长行的存储 60
4.4.2变长列的存储 63
4.5 SQLServer的页链接 65
4.6文本和图像数据 65
4.6.1 LOB数据存储在表外 66
4.6.2 LOB数据存储在数据行 67
4.7 SQL Server的PRIMARY KEY和UNIQUE约束 71
4.7.1列值的可空性 71
4.7.2索引属性 72
4.7.3选择码 72
4.8.2全局临时表(##) 73
4.8.1私有临时表(#) 73
4.SQL Server的临时表 73
4.8.3直接使用tempdb 74
4.8.4临时表上的约束 74
4.9 SQLServer的系统表 75
4.10本章小结 78
参考文献 78
第5章索引及行操作 79
5.1.1堆文件 80
5.1.2 B树与B+树索引结构 80
5.1预备知识 80
5.2 SQLServer的索引组织 84
5.2.1簇集索引 85
5.2.2非簇集索引 86
5.3在SQLServer中创建索引 87
5.3.1 主要参数说明 88
5.3.2其他选项说明 88
5.3.3约束与索引 89
5.4SQL Server的索引页结构 90
5.4.1具有惟一标识符的簇集索引行 90
5.4.2索引行格式 93
5.4.3簇集索引的结点行 94
5.4.4非簇集索引的叶级行 99
5.4.5非簇集索引的结点行 104
5.5索引的空间需求 108
5.5.1 B树的大小 109
5.5.2索引的实际大小与估计大小 110
5.6索引的管理 111
5.6.1索引碎片的类型 111
5.6.2索引碎片的检测 111
5.6.3删除索引碎片 113
5.7SQL Server的特殊索引 114
5.7.1先决条件 114
5.7.2计算列上的索引 116
5.7.3索引视图 117
5.8索引的使用 117
5.8.1 查找行 118
5.8.2连接运算 118
5.8.3排序 118
5.9插入行 119
5.8.4分组聚集 119
5.8.5维护惟一性 119
5.10分裂页 120
5.10.1分裂索引的根页 120
5.10.2分裂索引的中间页 120
5.10.3分裂数据页 120
5.11删除行 124
5.11.1从堆中删除行 124
5.11.2从B树中删除行 127
5.12更新行 130
5.11.4回收页 130
5.11.3从索引的中间结点删除行 130
5.12.1移动行 131
5.12.2管理转向指针 133
5.12.3在位更新 133
5.12.4异位更新 133
5.13表级与索引级的数据更新 136
5.14本章小结 136
参考文献 136
6.1 SQL Server查询处理概述 137
第6章SQLServer查询处理 137
6.1.1 SQLServer查询的体系结构 138
6.1.2查询处理特点 140
6.2执行模型 142
6.2.1基本知识 142
6.2.2多种执行模型的介绍 143
6.2.3 SQLServer查询执行模型 144
6.3基本运算 148
6.3.1选择运算 148
6.2.4物理操作的顺序 148
6.3.2哈希 149
6.3.3排序 152
6.3.4其他操作 154
6.4连接 156
6.4.1嵌套循环连接 156
6.4.2归并连接 157
6.4.3 Hash连接 158
6.5聚集 167
6.5.1 基于嵌套循环的聚集算法 167
6.5.2基于排序的聚集 168
6.5.3基于哈希的聚集 169
6.6子查询处理 169
6.6.1 假设 170
6.6.2异步I/O 172
6.6.3避免I/O 172
6.6.4数据流 176
6.6.5控制流 178
参考文献 181
6.7本章小结 181
第7章SQLServer查询优化技术 183
7.1 概述 183
7.1.1基于代价的方法和启发式方法 184
7.1.2语法优化和语义优化 185
7.1.3新的优化方法 185
7.2 SQLServer的查询优化概述 186
7.2.1 Cascades查询优化器框架 187
7.2.2 MEMO结构 189
7.3.1优化模型 193
7.3 SQL Server优化策略 193
7.3.2优化时间 195
7.3.3转换及转换规则 195
7.3.4多阶段优化 199
7.4连接顺序的选择方法 201
7.5子查询的优化 210
7.6 SQLServer的物理优化 216
7.6.1查询分析 216
7.6.2如何选择索引 221
7.6.3连接算法的选择 229
7.7代价计算 230
7.7.1一般的代价计算方法 230
7.7.2选择运算 231
7.7.3排序和连接 235
7.7.4 SQLServer中统计信息的管理 235
7.8其他的辅助功能 237
7.8.1如何正确选择计划 237
7.8.2提示技术 237
7.8.3更新计划 238
7.9本章小结 238
参考文献 239
第8章事务 240
8.1事务概念 240
8.1.1事务基本性质 241
8.1.2事务生命周期 243
8.2 SQLServer 中的事务定义 244
8.2.1事务定义模式 244
8.2.2事务执行模式 245
8.2.3批处理、触发器中的事务 247
8.3.1平面事务 248
8.3 SQLServer中的事务模型 248
8.3.2嵌套事务 249
8.3.3保存点 251
8.3.4分布式事务 253
8.4事务调度 254
8.5事务隔离性级别 258
8.5.1并发调度中的不一致性现象 258
8.5.2 SQLServer中事务隔离性级别的定义 260
8.6本章小结 264
第9章并发控制 265
9.2.1基本锁模式 266
9.1基于锁的并发控制 266
9.2锁模式 266
9.2.2意向锁 269
9.2.3其他锁模式 271
9.2.4码区间锁 272
9.3锁资源 276
9.4锁持有度 278
9.5锁拥有者 279
9.6.1两段锁协议 280
9.6封锁协议 280
9.6.2两阶段提交协议 281
9.7显示锁信息 281
9.8锁管理器 290
9.8.1封锁体系结构 290
9.8.2锁块 292
9.8.3锁资源块 292
9.8.4锁拥有者块 294
9.9锁升级 294
9.10.1阻塞 295
9.10封锁产生的问题 295
9.10.3死锁 298
9.10.2活锁 298
9.11绑定连接 303
9.12强制封锁类型 305
9.13乐观并发控制原理 306
9.13.1有效性检查协议 307
9.13.2游标并发 307
9.14本章小结 309
10.1.1事务故障 310
第10章恢复 310
10.1故障类型 310
10.1.2系统故障 311
10.1.3介质故障 311
10.2 日志 312
10.2.1基本日志结构 312
10.2.2基于日志的恢复 313
10.2.3检查点 316
10.3.1 ARIES概述 318
10.3 ARIES算法介绍 318
10.3.2 ARIES中数据结构 320
10.3.3 ARIES的常规处理 322
10.3.4重启处理 323
10.4 SQLServer 中的备份与恢复 328
10.4.1备份类型 328
10.4.2将数据库还原到前一个状态 332
10.4.3恢复模型 333
10.5 SQLServer事务日志物理构架 335
10.5.2虚拟日志文件 336
10.5.1创建日志文件 336
10.5.3截断事务日志 338
10.5.4收缩日志文件 339
10.6 SQLServer事务日志逻辑构架 341
10.6.1事务日志内容 341
10.6.2日志管理器 342
10.6.3 SQLServer的检查点 343
10.7本章小结 345
参考文献 345
11.1.1数据仓库、OLAP与Data Mining基本框架 346
11.1多维数据模型及相关概念 346
第11章Analysis Services 2000概述 346
11.1.2基本概念 348
11.1.3星形模式(Star Schema) 351
11.1.4雪花模式(Snow Flake Schema) 351
11.1.5聚集(aggregation) 352
11.2 Analysis Serwices的体系结构和功能 354
11.3 Analysis Server的多维查询语言MDX及其处理 356
11.3.1 MDX的坐标系统 356
11.3.3轴维和切片维 357
11.3.2 MDX的语法格式 357
11.3.4 MDX查询示例 358
11.3.5 MDX语句的查询处理 360
11.4 Analysis Server的Cube处理 362
11.5 Analysis Server的数据挖掘 363
11.5.1 OLEDB for DM 363
11.5.2数据挖掘模型 364
11.5.3 Analysis Services数据挖掘三层体系结构 366
参考文献 369
11.6本章小结 369
第12章SQLXML——SQL Server对XML的支持 371
12.1 SQLServer对XML的支持 372
12.1.1连接两个世界的桥梁 372
12.1.2 SQL Serwer中支持XML访问的体系结构 373
12.1.3 SQLXML 373
12.2 SQLFOR XML查询 375
12.2.1 关系视图上的XML查询 375
12.2.2 FOR XML查询的几种模式 375
12.2.3生成XML形式查询结果的机制 378
12.3建立在关系数据上的XML视图 379
12.3.1 XML视图概述 379
12.3.2 利用带注释的映象模式在关系数据库上建立XML视图 380
12.3.3基于XML视图的XPath查询 384
12.3.4基于XML视图的更新 385
12.4 XML数据转换为关系数据 386
12.4.1 OpenXML 387
12.4.2 XML Bulk Load 389
12.5本章小结 394
参考文献 394