《网络上数据库的调整和系统的有效运行》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)Microsoft 著;林钢等译
  • 出 版 社:北京:学苑出版社
  • 出版年份:1994
  • ISBN:7507709752
  • 页数:367 页
图书介绍:

简介 1

目录 1

第一部分 学习手册 5

模块1:性能概述 5

概述 5

运行性能的目标 5

OLTP系统 6

决策支持系统 6

折衷 6

OLTP与决策支持间的折衷 6

运行性能如何测度 6

响应时间与信息吞吐量 6

解决方法 7

影响运行性能的因素 7

应用程序 7

结构/资源 7

数据库管理系统 7

并发作业 7

哪些能够得到改进 8

调整服务器的资源使用率 8

调整数据库 8

调整进程 8

解决竞争与并发问题 8

SQL Server结构概述 9

运行性能调整方法(续) 9

运行性能调整方法 9

SQL Server组成 10

内核 10

句法分析程序、优化程序和编译器 10

SQL Server如何处理查询 10

Windows NT SQL Server的新特点:异步检查点 11

SQL Server如何使用内存缓冲区 11

写高速缓存控制器 12

SQL Server如何与客户接口 12

SQL Server如何与客户/工作站通讯 12

SQL Server for Windows NT 13

SQL Server 13

SQL Server如何使用文件 13

可调整的结构 14

高容量 14

对称多处理(SMP) 14

单进程多线程 14

完全32位 14

异步I/O 14

使用Windows NT服务 15

SQL Server实现的比较 15

单进程和多线程的实现 15

复习 16

选择一种文件系统:FAT、HPFS或NTFS 17

概述 17

模块2:平台优化 17

调整操作系统 18

调整网络操作系统 18

调整网络连接 18

调整缓冲区容量 19

最小化网络服务 19

使“写高速缓存”无效 19

调整SQL Server 19

选择排序顺序 20

调整临时数据库 21

SQL Server的内存分配 22

内存使用 22

配置过程高速缓存 23

过程高速缓存 24

关于过程高速缓存的信息 24

调整过程高速缓存 24

设定用户连接 24

动态用户连接 25

sp_configure过程 25

恢复间隔 25

用户连接 25

内存 25

最大工作线程 26

最大异步I/O 26

保留资源使用 26

检测工具 26

过程高速缓存 26

锁 26

打开数据库、打开对象、设备 26

在RAM中的tempdb 26

检测什么 27

确定内存使用:DBCC MEMUSAGE 27

内存使用 28

缓冲区高速缓存 28

过程高速缓存 28

SQL Monitor(sp_monitor) 28

sp_who 29

对sysprocesses表的样本查询 30

sysprocesses表 30

检测性能统计:DBCC SQLPERF 31

DBCC SQLPERF(IOStats) 31

Log Writes(日志写) 31

Batch Writes(批量写) 32

Page Reads(页读) 32

Page Writes(页写) 32

Transactions(事务) 32

DBCC SQLPERF(LRUStats) 32

Cache Hit Ratio(高速缓存命中率) 32

SQL Server for Windows NT新增:“空闲页扫描”极限 33

scan Limit Reaehed(扫描极限达到次数) 33

建议 33

Scan Limit/Cache Size(扫描极限/高速缓存容量) 33

Free Page Scan(Average/Maximum)(空闲页扫描(平均值/最大值)) 33

Cache Flushes(高速缓存刷新次数) 33

DBCC SQL PREF(NETStats) 34

Network Reads(网络读次数) 34

Network Write(网络写次数) 34

Command Queue Length(命令队列长度) 34

Max Command Queue Length(最大命令队列长度) 34

Worker Threads(工作线程) 34

Max Worker Threads(最大工作线程数) 34

Network Threads(网络线程) 34

Microsoft Windows NT性能检测器 35

最大网络线程 35

复习 36

实验 36

平台优化 36

模块3:数据存储结构 37

概述 37

数据概念 37

管理员角度(概念角度) 38

服务器角度(内部角度) 38

数据存储结构 38

数据存储 38

设备 38

页间如何链接 39

页 39

扩展 39

数据库 39

分配单元 39

数据页 40

行的大小和性能 40

行的大小和数据类型 41

行的大小 41

空和非空 41

数据类型 41

索引页 42

索引结构 42

表和索引 42

保留索引 43

聚集索引:详图 43

非聚集索引:详图 44

非聚集索引 44

比较聚集和非聚集索引 45

获取有关表和索引的信息 45

sysindexes 45

sp_helpindex tablename 45

SET STATISTICS IO ON 45

估计表大小 46

预计性能 46

sp_spaceused过程 47

sp_spaceused为整个数据库的输出 47

sp_estspace过程 48

使用sp_estspace 48

数据存取 49

DBCC CHECKTABLE 49

通过表扫描提取 50

使用索引检索 50

实验 51

数据存储结构 51

数据更新的影响 51

插入 52

在没有聚集索引的表中加行 52

在有聚集索引的表中加行 52

性能影响 52

页分割 53

分配页的算法 53

溢出页 54

具有单调数据的页分配 54

删除 55

性能影响 55

修改 56

修改步骤 56

局部修改 56

动态索引重组织 57

动态索引重组织的实质 57

选择压缩数据页 57

FILLFACTOR 58

益处 58

FILLFACTOR(接前) 59

聚集索引和非聚集索引的比较 60

数据存储结构 60

实验 60

段 61

益处 61

SQL Server为Windows NT新增功能:自动数据拆卸 61

段的实现 61

建议 62

段的实现 62

复习 62

模块4:为查询选择索引 63

概述 63

为什么使用索引 63

使用索引以避免表扫描 63

用户分析 64

弄清Microsoft SQL Server是如何工作的 64

数据分析 64

使用索引以限制表扫描范围 64

明智地使用索引 64

使用索引可避免排序 64

选择有用的索引 65

一般性考虑原则 65

关键性考虑原则 65

选择率(Selectivity) 65

表扫描 66

数据分布 66

选择率:例子 66

选择合适的索引类型 67

实验 67

为查询选择索引 67

聚集索引的有效候选类型 68

考虑因素 68

常见的错误认识 68

非聚集索引的有效候选类型 68

考虑因素 69

复合索引的有效候选类型 69

考虑因素 69

复合索引与多重单列索引的对比 70

SQL Server for Windows NT新增功能 70

覆盖索引 70

覆盖索引:例子 71

考虑因素 71

聚集和非聚集索引的比较 72

查询的索引匹配 72

用于数据范围的索引:例子 73

在price列上建立聚集索引 73

在price列上建立非聚集索引 73

在Price、title列上建立覆盖索引 73

表中无索引 73

用于AND连接的索引:例子 74

挑选对上例的评价方案 74

用于OR连接的索引:例子 74

挑选对上例的评价方案 74

评价上例的几种选择方案 75

用于SELECT*的索引:例子 75

课堂讨论 75

用于多重查询的索引 76

挑选上例的评价方案 76

不要索引的情况 77

索引选择准则 77

决定所有查询的优先级 77

决定每个查询的选择率 77

常见的错误认识 78

决定其他必需的索引 78

决定待建立的非聚集索引类型 78

为聚集索引选择最适合的列 78

决定应该索引哪些列 78

为每张表真写活动表 78

测试查询的性能 79

事务分析 79

为每张表填写活动表 80

复习 80

实验 81

为查询选择索引 81

模块5:查询优化器概述 82

概述 82

查询优化器的目的 82

优化方式确定效率最高的查询计划 82

SQL Server使用基于开销的优化方式 83

性能检测 83

编译 84

查询优化 84

数据库存取例程 84

什么场合用查询优化 84

语法分析过程 84

标准化过程 84

索引统计 85

分布页 85

SQL Server是如何计算分布级的 86

分布级的一个例子 87

计算分布级数 87

课堂实例 87

查询优化器概述 88

修改统计 88

实验 88

以下情形下应UPDATE STATISTICS 89

SET语句 89

SHOWPLAN 89

NOEXEC 89

STATISTICS TIME 90

STATISTICS IO 90

SHOWPLAN:实例 90

SHOWPLAN的输出 90

嵌套循环 90

复习 91

阶段一:查询分析 92

查询分析 92

模块6:查询优化过程 92

概述 92

搜索参数 93

非搜索参数 93

转换非搜索参数 94

使用非搜索参数来避免索引的使用 94

OR(或)子句 94

连接子句 95

自连接(Self-Join) 95

实验 96

查询优化的过程 96

阶段二:索引选择 96

确定子句的选择率 97

如果统计数字存在 97

确定是否存在一个有用的索引 97

考虑 97

如果没有统计数字 98

使用统计数字的例外 98

混合数据类型 98

未知数值 98

确定连接子句的选择率 99

连接子句 99

确定页的存取数量 99

在price列上建立聚集索引的情况 100

计算页存取数的例子 100

对于唯一索引的情况 100

对于非聚集索引的情况 100

对于聚集索引的情况 100

对于没有索引情况 100

对于覆盖索引的情况 100

在price列上建立非聚集索引的情况 101

在Priec,title列上建立覆盖索引的情况 101

阶段三:连接选择 101

选择最佳方案 101

计算总开销 102

单表与多表的处理 102

单表处理 102

多表处理 102

追踪标识的输出 103

追踪标识 103

304,310和302追踪标识输出 104

课上讨论 104

复习 105

模块7:查询优化器的处理策略 106

概述 106

表扫描和索引存取 106

表扫描 106

索引存取 107

实验 107

查询优化器的处理策略 107

缺点 108

优点 108

OR过程策略(动态索引) 108

OR处理策略(动态索引):举例 109

用于OR处理策略的查询方案 109

实验 110

查询优化器的处理策略 110

连接顺序策略 110

帮助优化器 111

连接策略的嵌套迭代 111

策略 111

性能 111

连接策略的嵌套迭代:举例 112

执行 112

指导 112

titles到titleauthor之间的连接:举例 113

处理步骤 113

titleauthor到titles之间的连接:举例 114

处理步骤 114

三路连接:举例 115

关键点 115

实验 116

查询优化器的处理策略 116

重新格式化策略 116

缺点 117

重新格式化策略的查询方案 117

FORCEPLAN 117

优化器的特殊情况 118

实验 118

查询优化的处理策略 118

聚集 119

用于聚集的查询方案 119

单独的聚集:举例 120

双聚集:举例 120

覆盖查询 121

SQL Server for Windows NT的新增功能 121

实验 122

查询优化器的处理策略 122

ORDER BY 122

GROUP BY 123

建议 123

建议 123

SQL Server for Windows NT的新增功能 123

实验 124

查询优化器的处理策略 124

视图 124

视图:例子 125

复习 126

实验 126

查询优化器的处理策略 126

存储过程如何工作 127

分析 127

模块8:使用存储过程 127

概述 127

正规化 128

查询处理 128

存储过程和查询的比较 128

非预先设计的查询 128

特殊情况:视图 128

过程的高速缓存 129

重新编译存储过程 130

重新编译选项 130

存储过程和触发器 131

存储过程的益处 131

性能 131

数据完整性强制措施 132

复习 132

设计改变执行效率 132

安全性 132

存取能力 132

实验 133

利用存储过程 133

模块9:非正规化 134

概述 134

性能设计 134

数据库一致性 134

易理解 134

快速性能 134

正规化设计 135

范式 135

性能设计 135

逻辑数据库设计 135

非正规化优点和弊端 136

性能影响 136

折衷方案 136

非正规化设计 136

优点 137

弊端 137

决定进行非正规化操作 137

考虑冗余数据与连接 137

维护冗余数据 138

使用存储过程进行修改操作 138

用触发器进行修改 138

涉及多少行 138

什么是修改考虑 138

数据项一起被访问的频率怎样 138

非正规化技术 139

复制列 139

重定义列 139

重定义表 139

复制整表 139

复制列 139

性能优点 140

选择用于复制的稳定列 140

性能优点 140

精确复制 140

有效候选 140

复制外部键:例子 141

复制属性:例子 141

折衷 142

派生列 142

有效候选 142

几点考虑 142

性能优点 143

派生列:例子 143

重定义列 143

几点考虑 144

性能优点 144

有效候选 144

虚构键列 144

为虚构键创建自动唯一值 145

列摘要 145

有效候选 145

性能优点 145

正文数据类型:例子 146

有效候选 146

几点考虑 146

可选择的解决方案 146

可选择方案 147

几点考虑 147

有效候选 147

图像数据类型:例子 147

重定义表 148

复制和分割表 148

有效候选 148

几点考虑 148

通过列复制/分割数据 149

有效候选 149

几点考虑 149

性能优点 149

通过行复制/分割数据 150

有效候选 150

几点考虑 150

性能优点 151

网关环境 151

复制整表 151

几点考虑 151

有效候选 151

复习 152

实验 152

非正规操作 152

模块10:数据库的一致性和并发性 153

概述 153

允许并发(性)就必须强调一致(性) 153

级别3 154

级别2 154

级别0 154

一致性的级别 154

级别1 154

锁定 155

SQL Server for Windows NT新增功能:改进的锁定管理器 155

为什么需要锁定 155

暂时的数据更新(未提交的相关性) 155

数据更新丢失 155

页与行级锁定 156

页锁定 156

共享的页锁定(S) 156

锁定的粒度 156

不正确的数据合计 156

排他的页锁定(X) 157

数据更新的页锁定(U) 157

HOLDLOCK关键字 157

表锁定 157

共享表锁定(S) 157

排他的表锁定(X) 157

集中共享/集中排他锁定(IS或IX) 158

升级列表锁定 158

锁定:举例 158

带有索引和搜寻参数的语句 158

锁定的兼容性 159

在不同事务期间可得到的锁定类型的摘要 159

没有索引或搜寻参数的语句 159

HOLDLOCK(3级锁定) 159

关键字 160

锁定如何加强一致性 160

死锁和活锁 161

死锁 161

如果避免死锁 161

活锁 161

索引中的并发性 162

索引锁定 162

SQL Server用来避免索引锁定的办法 162

设置锁定数目 163

sp_lock 163

锁定类型 163

实验 164

数据库一致性和并发性 164

影响性能的因素 164

等待释放锁定 164

频繁死锁 165

创建索引 165

大量的修改事务 165

减少锁定争用 165

采用低的填充因子或缓冲行 165

采用存储过程 166

只有必要时使用HOLDLOCK 166

调度某些行为到非高峰时间 166

避免多用户数据库的不一致性 166

避免查询中用户交互 166

创建单独的历史表 166

避免热点 166

保持事务简短并且在一个程序组中 166

日志 167

SQL Server for Windows NT的新增功能:更有效的日志分配 167

在客户服务器交互作用中优化并发性 168

优化客户服务器交互性 168

在客户机上缓冲所有的行 168

在客户机上仅缓冲键值 168

有限的SELECT语句 169

客户服务器交互中的控制锁定 169

连续滚动 169

优化的并发控制(OCC) 170

不利之处 170

浏览处理技术 170

SQL Server浏览模式 171

SELECT...FOR BROWSE 171

处理步骤 171

游标 172

游标模型元素 172

性能考虑 172

用游标浏览 173

对修改敏感性 173

复习 174

模块11:其他性能内容 175

概述 175

维护和性能 175

安排数据库卸出 176

SOL Server for Windows NT新增功能:快速备份和恢复 176

输入/输出数据采用大量拷贝程序(bcp) 176

建议 177

SQL Server for windows NT新增功能:协商报文的大小 177

执行大量的修改事务 177

实验/演示 178

建立索引 178

设置恢复间隔 179

标题更新统计 179

WITH SORTED_DATA 179

客户程序设计忠告 180

负载平衡 181

批量与交互 181

客户与服务器 181

卸下规则和缺省检查 181

卸下数据 181

卸下处理 182

排序数据 182

工作负载分解到多个服务器上 182

备份数据 182

分布与集中处理 183

容量 184

速度 184

将应用程序分散到硬盘上 184

使用超级服务器的优点 184

易扩充性 185

容错 185

易管理性 185

均质性 185

超级服务器的优点(续) 185

磁盘性能 185

随机I/O与顺序I/O 186

驱动器镜像 186

驱动镜像和双工 186

决定镜像什么 187

数据和事务日志设备的镜像 187

远程访问SQLServer 188

远程访问服务(RAS) 188

特点和功能 188

性能考虑 188

复习 188

实验 189

其他性能问题 189

模块12:问题分析 190

概述 190

性能调整方法 190

分析用户需求 190

优化查询 191

选择索引 191

测试存储过程 191

性能调整方法(续) 191

开发存储过程 191

分析每个数据库的各种事务 191

优化平台 191

设计正规化数据库 191

基准模拟产生环境 192

监控器性能 192

确定性能问题 192

用户行为 193

产生环境 193

查询 193

存储过程 194

查询优化器 194

事务 194

如果是一个SELECT语句 194

数据库 195

索引 195

逻辑设计 195

物理设计 195

评估非正规化 195

调整,再测试,监控,重复 196

安排维护 196

确定基线性能 196

表扫描的开销 196

如何提高表扫描性能 196

如何设置基准 197

一个好的基准应该做什么 197

为什么使用基准 197

基准使用指南 198

性能回顾 198

平台优化复习 199

数据存储结构复习 199

选择查询索引复习 200

查询优化器复习 201

存储过程复习 201

非正规化复习 202

数据库一致性和并发性复习 202

其他性能问题复习 203

实验 204

问题分析 204

isq1在实验中的应用 207

课程数据库:perfdb 207

isq1/w在实验中的应用 207

第二部分 实验手册 207

命名规则 207

实验1:实验指导 207

实验2:平台优化 209

目标 209

开始之前 209

练习1:内存使用:DBCC MEMUSAGE 209

练习2:监控资源使用情况:DBCC SQLPERF 211

练习3:Windows NT性能监视器 212

练习2:每个表的多重索引 213

练习1:表大小和I/O 213

目的 213

开始之前 213

实验3:数据存储结构 213

练习3:FILLFACTOR 216

练习4:大键 216

开始之前 216

实验4:为查询选择索引 218

目的 218

练习1:选择率 218

练习2:选择索引 219

练习3:覆盖查询 221

练习4:OR的索引 221

如果时间允许 222

练习5:为两个查询建立索引 222

实验5:查询优化器概述 223

目的 223

练习1:分布步骤 223

实验6:查询优化阶段 225

目标 225

前言 225

练习1:确定检索参数 225

实验7:查询优化器的处理策略 227

目的 227

开始之前 227

练习1:执行方案——表扫描 227

练习2:评价结果集和索引使用法 227

练习3:OR处理策略 230

练习4:连接顺序策略 231

练习5:重新格式化策略 233

练习6:聚合和覆盖查询 236

练习7:ORDER BY和GROUP BY 238

练习8:综合 239

练习9:决定理想响应时间 241

实验8:使用存储过程 243

目的 243

开始之前 243

练习1:重新编译存储过程 243

目的 247

练习1:复制列 247

实验9:非正规化 247

练习2:计算数据 248

练习3:分割表 248

练习4:分割表的条件 249

练习5:虚构键 249

实验10:数据库的一致性和并发性 251

目的 251

在实验开始前 251

练习1:表和页锁定 251

练习2:升级点 253

练习3:行填充 254

实验11:其他的性能问题 256

目的 256

练习1:大量的修改事务 256

练习2:处理数据库活动 257

练习1:安装图书馆数据库 258

练习2:图书馆实例研究 258

介绍 258

实验12:问题分析 258

历史信息需求 259

图书核查过程 260

图书馆功能 261

练习3:重新检查非正规Library数据库 265

练习4:分析Loanbook事务 270

练习5:分析事务Loanbook的事务混合 277

在你开始工作前 277

练习6:选择索引 277

你的目标 278

在开始工作之前 278

练习7:优化查询 279

练习8:安排运行维护 280

练习9:改善returnbook事务的性能 281

第三部分 实验答案 287

实验1.实验指导 287

课程数据库:perfdb 287

实验2:平台优化 289

Objective 289

开始之前 289

练习1:内存使用:DBCC MEMUSAGE 289

练习2:监控资源使用情况:DBCC SQLPERF 290

练习3:Windows NT性能监视器 291

实验3:数据存储结构 292

目的 292

开始之前 292

练习1:表大小和I/O 292

练习2:每个表的多重索引 292

练习3:FILLFACTOR 294

练习4:大键 295

开始之前 295

实验4:为查询选择索引 297

目的 297

练习1:选择率 297

练习2:选择索引 298

练习3:覆盖查询 300

练习4:OR的索引 301

练习5:为两个查询建立索引 301

如果时间允许 301

实验5:查询优化器概述 302

目的 302

练习1:分布步骤 302

实验6:查询优化阶段 304

目的 304

前言 304

练习1:确定检索参数 304

练习2:评价结果集和索引使用法 306

开始之前 306

练习1:执行方案——表扫描 306

实验7:查询优化器的处理策略 306

目的 306

练习3:OR处理策略 309

练习4:连接顺序策略 310

练习5:重新格式化策略 312

练习6:聚合和覆盖查询 314

练习7:ORDER BY和GROUP BY 317

练习8:综合 317

练习9:决定理想响应时间 319

实验8:使用存储过程 321

目的 321

开始之前 321

练习1:重新编译存储过程 321

练习1:复制列 324

实验9:非正规化 324

目的 324

练习2:计算数据 325

练习3:分割表 325

练习4:分割表的条件 326

练习5:虚构键 326

实验10:数据库的一致性和并发性 328

目的 328

在实验开始前 328

练习1:表和页锁定 328

练习2:升级点 330

练习3:行填充 330

练习1:大量的修改事务 333

实验11:其他的性能问题 333

目的 333

练习2:处理数据库活动 334

实验12:问题分析 335

练习1:安装图书馆数据库 335

练习2:图书馆实例研究 335

练习3:重新检查非正规Libra-y数据库 335

练习4:分析Loanbook事务 336

练习5:分析事务Loanbook的事务混合 337

在你开始工作前 337

你的目标 338

练习7:查询优化 338

在开始工作之前 338

练习6:选择索引 338

练习8:安排运行维护 340

练习9:改善returnbook事务的性能 340

第四部分 附录 343

附录A 调用OS/2 343

附录B OS\22.0对MS—SQL Server的支持 345

附录C 调整Microsoft LAN MANAGER 347

附录D 事务分析矩阵 350

附录E 表格信息矩阵 352

附录F 查询测试矩阵 354

附录G SHOWPLAN输出 356

附录H 创建自动的单一键 358

附录I 快速参考 360

附录J 有关SQL Server的出版物 364