第1章 引言 1
1.1 数据库管理系统的通用功能与系统组成 1
1.2 《数据库专题训练》的由来 3
1.3 选择SQL Server 2000的原因 4
1.4 SQL Server 2000的技术特色 5
1.5 《数据库专题训练》的实验要求 5
本章小结 7
参考文献 7
第2章 SQL Server 2000的体系结构 8
2.1 SQL Server的客户服务器方式 8
2.1.1 网络程序库 9
2.1.2 用户模式调度器 10
2.1.3 开放数据服务 11
2.2 关系引擎与存储引擎 11
2.2.1 命令解析器 11
2.2.2 优化器 12
2.2.3 SQL管理器 12
2.2.4 表达式管理器 12
2.2.5 查询执行器 13
2.2.6 关系引擎与存储引擎间的通信 13
2.3 存取方法管理器 13
2.3.1 行操作管理器与索引管理器 13
2.3.2 页面管理器与文本管理器 15
2.4 事务管理器 16
2.5 锁管理器 17
2.6 内存管理器 17
2.6.1 缓冲区管理与存储池 17
2.6.2 访问内存页 18
2.6.3 缓冲区的页面替换策略 18
2.7 事务日志与故障恢复 18
2.7.1 日志管理 18
2.7.2 检查点操作 18
2.7.3 恢复过程 19
2.7.4 使用页面LSN的恢复技术 20
2.8 SQL内核与操作系统间的交互 21
2.8.1 线程处理与对称多进程处理 21
2.8.2 工者线程池 23
2.8.3 磁盘I/O操作 23
本章小结 24
参考文献 24
第3章 数据库与数据库文件 25
3.1 SQL Server系统数据库 26
3.1.1 master数据库 26
3.1.2 model数据库 26
3.1.3 tempdb数据库 26
3.1.4 pubs数据库 27
3.1.5 Northwind数据库 27
3.1.6 msdb数据库 27
3.2 数据库文件 28
3.2.1 基本知识 28
3.2.2 SQL Server数据库文件 28
3.3 SQL Server数据库文件组 29
3.3.1 默认的文件组 30
3.3.2 使用多个文件的原因 30
3.3.3 利用文件组创建数据库的实例 31
3.4 SQL Server数据库文件结构 32
3.4.1 基本知识 32
3.4.2 SQL Server用户数据库 33
3.4.3 SQL Server的空间分配 34
3.5 数据库的备份与恢复 37
3.5.1 备份类型 37
3.5.2 恢复模式 38
本章小结 39
参考文献 40
第4章 表的物理存储 41
4.1 内部存储概述 42
4.2 数据页 43
4.2.1 基本知识 43
4.2.2 数据页的格式 43
4.2.3 SQL Server的数据页 46
4.2.4 检查数据页 47
4.3 数据行的结构 51
4.3.1 基本知识 51
4.3.2 SQL Server的数据行结构 52
4.3.3 列偏移数组 54
4.4 SQL Server中定长和变长行的存储 54
4.4.1 定长行的存储 55
4.4.2 变长列的存储 57
4.5 SQL Server的页链接 58
4.6 文本和图像数据 59
4.6.1 LOB数据存储在表外 59
4.6.2 LOB数据存储在数据行 60
4.7 SQL Server的PRIMARY KEY和UNIQUE约束 63
4.7.1 列值的可空性 64
4.7.2 索引属性 64
4.7.3 选择码 64
4.8 SQL Server的临时表 65
4.8.1 私有临时表 65
4.8.2 全局临时表 65
4.8.3 直接使用tempdb 66
4.8.4 临时表上的约束 66
4.9 SQL Server的系统表 67
本章小结 70
参考文献 70
第5章 索引及行操作 71
5.1 基本原理 71
5.1.1 堆文件 72
5.1.2 B树与B?树索引结构 72
5.2 SQL Server的索引组织 75
5.2.1 簇集索引 76
5.2.2 非簇集索引 77
5.3 在SQL Server中创建索引 77
5.3.1 主要参数说明 78
5.3.2 其他选项说明 78
5.3.3 约束与索引 79
5.4 SQL Server的索引页结构 80
5.4.1 具有唯一标识符的簇集索引行 80
5.4.2 索引行格式 83
5.4.3 簇集索引的结点行 84
5.4.4 非簇集索引的叶级行 88
5.4.5 非簇集索引的结点行 92
5.5 索引的空间需求 96
5.5.1 B树的大小 96
5.5.2 索引的实际大小与估计大小 97
5.6 索引的管理 98
5.6.1 索引碎片的类型 98
5.6.2 索引碎片的检测 99
5.6.3 删除索引碎片 100
5.7 SQL Server的特殊索引 101
5.7.1 先决条件 102
5.7.2 计算列上的索引 103
5.7.3 索引视图 104
5.8 索引的使用 104
5.8.1 查找行 104
5.8.2 连接运算 105
5.8.3 排序 105
5.8.4 分组聚集 105
5.8.5 维护唯一性 105
5.9 插入行 106
5.10 分裂页 106
5.10.1 分裂索引的根页 106
5.10.2 分裂索引的中间页 107
5.10.3 分裂数据页 107
5.11 删除行 110
5.11.1 从堆中删除行 110
5.11.2 从B树中删除行 113
5.11.3 从索引的中间结点删除行 116
5.11.4 回收页 116
5.12 更新行 116
5.12.1 移动行 116
5.12.2 管理转向指针 118
5.12.3 在位更新 118
5.12.4 异位更新 119
5.13 表级与索引级的数据更新 121
本章小结 121
参考文献 121
第6章 纯XML数据库管理系统研究 122
6.1 基本知识 122
6.1.1 Web与HTML 122
6.1.2 什么是XML 123
6.1.3 XML的优点 123
6.1.4 基本概念 124
6.2 XML数据库及其存储策略 125
6.2.1 XML数据库与XML文档 125
6.2.2 XML数据库的存储策略 126
6.2.3 不同存储方法的性能比较与分析 131
6.3 Native XML数据库管理系统 134
6.3.1 为什么要基于XML 134
6.3.2 为什么要Native 135
6.3.3 Native XML数据库 136
6.3.4 Native XML数据库的特征 136
6.3.5 NXDBMS的体系结构 138
6.4 NXD的物理存储 139
6.4.1 数据模式问题 139
6.4.2 XML数据库的索引 148
6.5 NXD的存储管理 149
6.5.1 缓冲与文件管理 149
6.5.2 XML语义缓存 149
6.6 NXD的查询处理 152
6.6.1 查询语言:XQuery 152
6.6.2 数据更新:XUpdate 156
6.6.3 XML查询处理的研究现状 157
6.7 XML文档的编码方法 164
6.7.1 区间编码 165
6.7.2 位向量编码 166
6.7.3 前缀编码——Dewey编码 166
6.7.4 PBiTree编码 166
6.8 Native XML数据库的关键问题 167
6.9 测试NXDBMS性能的常用数据集 168
6.10 已有的NXDBMS简介 168
6.10.1 OrientX 168
6.10.2 Tamino 169
6.10.3 eXist 170
6.10.4 Timber 173
6.10.5 Natix 174
6.10.6 Lore 174
6.10.7 嵌入式XML数据库 175
6.11 解析器:XML的简单API 177
本章小结 178
参考文献 178
第7章 一个页式文件I/O系统 184
7.1 引言 184
7.2 系统常量、数据结构及主要算法 185
7.2.1 系统常量 185
7.2.2 主要数据结构 185
7.2.3 主要算法 186
7.3 系统结构 187
7.3.1 总体结构 187
7.3.2 文件结构 187
7.3.3 缓冲区结构 189
7.3.4 内存管理器 191
7.3.5 存取方法管理器 192
7.3.6 事务管理器 193
7.4 系统接口描述 194
7.4.1 外部接口描述 194
7.4.2 内部接口描述 197
7.5 系统接口的应用实例 202
本章小结 205
参考文献 205
附录A 206