《事务处理:概念与技术》PDF下载

  • 购买积分:22 如何计算积分?
  • 作  者:(美)格雷(Gray,J)著;孟小峰,于戈译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2001
  • ISBN:7111126416
  • 页数:825 页
图书介绍:本书覆盖了事务处理的全面技术,并详细描述了事务处理的相关问题和算法。

目录出版者的话专家指导委员会中文版序译者序译者简介序前言第一部分 事务处理基础第1章 概述 1

1.1 历史回顾 1

1.2 什么是事务处理系统 2

1.2.1 最终用户对事务处理系统的认识 4

1.2.2 管理员/操作员对事务处理系统的认识 6

1.2.3 应用设计者对事务处理系统的认识 8

1.2.4 从资源管理器角度对事务处理系统的认识 12

1.2.5 TP系统的核心服务 15

1.3 事务处理系统特征列表 16

1.3.1 应用开发特征 16

1.3.2 中心库特征 16

1.3.3 TP监控器的特征 20

1.3.4 数据通信特征 21

1.3.5 数据库特征 24

1.3.8 特征小结 29

1.3.7 教育和测试特征 29

1.3.6 操作特征 29

1.4 小结 30

1.5 历史评注 30

习题 32

答案 32

第2章 计算机系统基本术语 33

2.1 引言 33

2.2 基本硬件 33

2.2.1 存储器 35

2.2.2 处理器 41

2.2.3 通信硬件 42

2.2.4 硬件结构 43

2.3 基本软件——地址空间、进程、会话 45

2.3.1 地址空间 45

2.3.2 进程、保护域和线程 46

2.3.3 消息和会话 47

2.4 一般系统问题 48

2.4.1 客户和服务器 49

2.4.2 命名 50

2.4.3 认证 51

2.4.4 授权 52

2.4.5 调度和性能 52

2.4.6 小结 54

2.5 文件 54

2.5.1 文件操作 54

2.5.2 文件组织 55

2.5.3 分布式文件系统 56

2.5.4 SQL 56

2.6 软件性能 57

2.7.1 可移植性标准和互操作性标准 58

2.7.2 API和FAP 58

2.7 事务处理标准 58

2.7.3 LU6.2,一个事实标准 60

2.7.4 具有X/Open DTP的OSI-TP——正式标准 60

2.8 小结 62

习题 62

答案 64

第二部分 容错基础知识第3章 容错 67

3.1 引言 67

3.1.1 简单概率概述 67

3.1.2 容错的外部观点 68

3.2 定义 71

3.2.1 故障、失败、可用性、可靠性 71

3.2.2 故障避免和容错的分类 72

3.2.3 修复、失败即停、模块性、递归设计 72

3.3 实验研究 72

3.3.2 传统系统研究 73

3.3.1 断供是非常少见的事件 73

3.3.3 容错系统研究 74

3.4 典型模块失败率 76

3.5 容错的硬件措施 79

3.5.1 n工基本思想:怎样建立失败即停的模块 79

3.5.2 n工中的失败即停表决器与失败表决型表决器 80

3.5.3 n工与修复产生高可用性 81

3.5.4 表决器问题 83

3.5.5 小结 84

3.6 软件问题 85

3.6.1 N版本程序设计和软件容错 85

3.6.2 事务和软件容错 86

3.6.3 小结 87

3.7 故障模型和软件故障屏蔽 87

3.7.1 模型概览 88

3.7.2 建立高可用的存储 89

3.7.3 高可用的进程 94

3.7.4 基于会话和进程对的可靠消息 102

3.7.5 进程-消息-存储模型的小结 109

3.8 一般原理 110

3.9 一个警戒性的故事——系统错觉 110

3.10 小结 112

3.11 历史评注 112

习题 113

答案 115

第三部分 面向事务的计算第4章 事务模型 117

4.1 引言 117

4.2 原子操作和扁平事务 118

4.2.1 将写磁盘作为原子操作 118

4.2.2 操作类型分类 120

4.2.3 扁平事务 121

4.2.4 扁平事务的局限性 125

4.3 控制区域 127

4.3.1 控制区域的定义 128

4.3.2 控制区域的动态行为 129

4.3.3 小结 131

4.4 一种解释事务模型的符号表示法 132

4.4.1 描述事务模型哪些是必需的 132

4.4.2 符号表示法的构成元素 134

4.4.3 用一套简单的规则定义事务模型 135

4.5 带保存点的扁平事务 136

4.5.1 关于保存点 137

4.5.2 开发保存点模型下的规则 138

4.5.3 持久性保存点 139

4.6 链事务 140

4.7.1 嵌套结构的定义 142

4.7 嵌套事务 142

4.7.2 嵌套事务的使用 145

4.7.3 通过保存点模仿嵌套事务 146

4.8 分布事务 147

4.9 多级别事务 148

4.9.1 补偿事务的角色 149

4.9.2 多级别事务的使用 150

4.10 开放嵌套事务 153

4.11 长事务 153

4.11.1 事务处理上下文 154

4.11.2 小批量 157

4.11.3 saga 158

4.12 特殊事务模型 159

4.13 小结 161

4.14 历史评注 161

习题 164

答案 167

第5章 事务处理监控器:概述 172

5.1 引言 172

5.2 事务系统中的TP监控器的角色 172

5.2.1 面向事务的计算方式 173

5.2.2 事务处理服务 178

5.2.3 事务处理系统进程结构 180

5.2.4 小结 184

5.3 TP监控器的结构 185

53.1 TP监控器组件 185

5.3.2 事务服务的组件 188

5.3.3 TP监控器对于资源管理器接口的支持 190

5.4 事务型远程过程调用:基本思想 191

5.4.1 远程过程调用中的参与者 191

5.4.2 远程过程调用句柄的地址空间结构 192

5.4.3 远程过程调用的动态过程 193

5.4.4 小结 195

5.5 事务编程风格的例子 196

5.5.1 基本的处理循环逻辑 196

5.5.2 与事务有关的资源管理器:一个简单的例子 197

5.5.3 与事务有关的资源管理器:一个复杂的例子 202

5.5.4 使用持久保存点 203

5.6 专门术语的介绍 204

5.7 历史评注 205

习题 206

答案 207

第6章 事务处理监控器 209

6.1 介绍 209

6.2 事务型远程过程调用 211

6.2.1 资源管理器的接口 212

6.2.2 资源管理器对事务的支持 213

6.2.3 资源管理器和TP监控器之间的接口 215

6.2.4 资源管理器调用与资源管理器会话 217

6.2.5 小结 223

6.3 TP监控器的功能原理 223

63.1 TPOS的中心数据结构 224

6.3.2 TP监控器拥有的数据结构 228

6.3.3 TRPC路径的概览 233

6.3.4 中止竞争的TRPC 238

6.3.5 小结 238

6.4 管理请求和响应队列 239

6.4.1 映射资源管理器调用的短期队列 240

6.4.2 用于异步事务处理的永久性请求队列 242

6.4.3 小结 249

6.5 TP监控器的其他任务 250

6.5.1 负载平衡 250

6.5.2 认证和授权 255

6.5.3 重启处理 259

6.6 小结 261

6.7 历史评注 262

习题 264

答案 265

第四部分 并发控制第7章 隔离性的概念 269

7.1 引言 269

7.2 隔离性的引入 269

7.3 隔离性的依赖模型 271

7.3.1 静态分配与动态分配 272

7.3.2 事务依赖 272

7.3.3 三种有害的依赖 273

7.3.4 隔离性的形式化模型 274

7.4 隔离性:应用程序员的观点 274

7.5 隔离性定理 275

7.5.2 规范事务和两阶段事务 276

7.5.1 操作与事务 276

7.5.3 事务的调度 277

7.5.4 合法的调度和锁的相容性 277

7.5.5 版本、依赖、依赖图 278

7.5.6 等价的和隔离的调度:BEFORE、AFTER和虫洞 279

7.5.7 虫洞事务不具有隔离性 280

7.5.8 定义小结 281

7.5.9 隔离定理的小结 285

7.6 隔离性的级别 286

7.6.1 隔离性级别的定理 286

7.6.2 SQL与隔离级别 287

7.6.3 低隔离级别的优缺点 288

7.6.4 特殊的SQL隔离——跳读锁和通知锁 290

7.7 幻像和谓词锁 291

7.8 粒度锁 292

7.8.1 基于树的封锁和意向锁类型 293

7.8.2 更新型锁 295

7.8.3 粒度锁小结 296

7.8.4 码区间封锁 296

7.8.5 动态码区间锁:前码和后码封锁 297

7.8.6 码区间锁需要DAG封锁 299

7.8.7 DAG封锁协议 300

7.8.8 基于DAG的粒度封锁的形式化定义 301

7.9 封锁的启发式算法 302

7.10 嵌套事务封锁 304

7.11 调度与死锁 305

7.11.1 护卫现象 305

7.11.2 死锁避免与检测 306

7.11.3 等待图和死锁检测 307

7.11.4 分布式死锁 308

7.11.5 死锁的概率 309

7.12.1 字段调用 310

7.12 奇特方法 310

7.12.2 契约封锁和其他字段调用改进 312

7.12.3 乐观和时间戳封锁 314

7.12.4 时间域寻址 314

7.13 小结 316

7.14 历史评注 317

习题 318

答案 320

第8章 锁的实现 323

8.1 引言 323

8.1.1 关于本章 323

8.1.2 锁管理程序中并行的必要性 323

8.1.3 资源管理器和锁管理程序的地址空间 324

8.2 原子机指令 325

8.3 信号量 326

8.3.1 排他型信号量 327

8.3.2 蟹行:遍历共享数据结构 329

8.3.3 共享信号量 329

8.3.4 分配共享存储 332

8.3.5 信号量和异常 333

8.4 锁管理程序 334

8.4.1 锁名 334

8.4.2 锁队列和调度 335

8.4.3 锁长度和锁计数 337

8.4.4 锁管理程序接口和数据结构 338

8.4.5 锁管理程序的内部逻辑 339

8.4.6 锁升级和类属解锁、通知锁 344

8.4.7 事务保存点、提交和回滚 345

8.4.8 系统重启时的封锁 346

8.5 死锁检测 347

8.4.11 锁管理程序小结 347

8.4.10 锁管理程序配置和复杂性 347

8.4.9 长生事务 347

8.6 并行事务和并行嵌套事务封锁 349

8.7 小结 350

8.8 历史评注 350

习题 351

答案 353

第五部分 恢 复第9章 日志管理程序 357

9.1 引言 357

9.1.1 日志的使用 357

9.1.2 日志管理程序概述 357

9.1.3 日志管理程序和其他服务的关系 358

9.1.4 为什么需要日志管理程序 359

9.2 日志表 360

9.2.1 映射日志表到文件 360

9.2.2 日志序号 361

9.3 日志的公共接口 362

9.3.1 日志表的存取授权 362

9.3.2 读日志表 363

9.3.3 写日志表 364

9.3.4 小结 364

9.4 日志读写的实现细节 365

9.4.1 读日志 366

9.4.2 日志锚点 366

9.4.3 与事务相关的锚点 367

9.4.4 日志插入 367

9.4.5 分配和刷新日志的守护进程 368

9.4.6 谨慎写:串行写和乒乓写 369

9.4.7 成组提交、批量式、集装式 370

9.4.8 WADS写入 370

9.5 日志重启逻辑 371

9.4.10 小结 371

9.4.9 多日志的事务管理器 371

9.5.1 保存事务管理器的锚点 372

9.5.2 准备重启:日志锚点的谨慎写 372

9.5.3 在重启时找到锚点和日志尾 373

9.6 日志归档 374

9.6.1 应当有多少联机日志表 374

9.6.2 用于回滚、重启、归档的底线 374

9.6.3 动态日志:副拷贝和正向拷贝 375

9.6.4 不影响并发事务的日志归档 376

9.6.5 电子转存和变化累积 376

9.6.6 处理日志管理程序——归档环路 377

9.7 客户-服务器体系结构的日志系统 378

9.8 小结 378

习题 379

9.9 历史评注 379

答案 381

第10章 事务管理器概念 384

10.1 引言 384

10.2 事务管理器的接口 384

10.2.1 事务的应用接口 385

10.2.2 事务的资源管理器接口 388

10.2.3 事务管理器的功能 389

10.3 事务型资源管理器概念 391

10.3.1 DO-UNDO-REDO协议 391

10.3.2 日志表和日志记录 392

10.3.3 通信会话恢复 393

10.3.4 值日志 396

10.3.5 逻辑日志 397

10.3.6 物理-逻辑日志 399

10.3.7 物理-逻辑日志规则:FIX、WAL和Force-Log-at-Commit 400

10.3.8 补偿日志记录 407

10.3.9 物理-逻辑REDO的幂等性 408

10.3.10 小结 409

10.4 两阶段提交:使计算具有原子性 409

10.4.1 集中式系统中的两阶段提交 410

10.4.2 分布式事务和两阶段提交 414

10.5 小结 418

10.6 历史评注 419

习题 420

答案 422

第11章 事务管理器结构 426

11.1 引言 426

11.2 正常处理 426

11.2.1 事务标识符 426

11.2.2 事务管理器的数据结构 427

11.2.3 MyTrid()、Status_Transaction()、Leave_Transaction()和Resume_Transaction() 430

11.2.4 保存点日志记录 431

11.2.5 Begin_Work() 432

11.2.6 局部Commit_Work() 432

11.2.7 远程Commit_Work():Prepare()和Commit() 435

11.2.8 Save_Work()和Read_context() 437

11.2.9 Rollback_Work() 438

11.3 检查点 440

11.3.1 清晰检查点 441

11.3.2 模糊检查点 442

11.3.3 事务管理器检查点 443

11.4 系统重启 444

11.4.1 重启时的事务状态 445

11.4.2 事务管理器的重启逻辑 445

11.4.3 资源管理器重启逻辑,Identify() 448

11.4.6 两检查点方法:一种不同的策略 450

11.4.5 独立的资源管理器 450

11.4.4 重启设计小结 450

11.4.7 重启为什么能奏效 452

11.4.8 分布式事务解决方法:重启时两阶段提交 453

11.4.9 加速重启 453

11.4.10 其他重启问题 454

11.5 资源管理器的失败与重启 454

11.6 归档恢复 455

11.7 配置事务管理器 456

11.8 小结 457

习题 457

答案 458

12.2 异构型提交协调者 460

12.2.1 封闭式与开放式事务管理器 460

12.1 引言 460

第12章 高级事务管理器主题 460

12.2.2 封闭式事务管理器的互操作性 461

12.2.3 编写开放式事务管理器的网关 463

12.2.4 事务网关小结 465

12.3 高可用性(非阻塞型)提交协调者 465

12.4 提交转移 467

12.5 两阶段提交的优化 469

12.5.1 只读提交优化 470

12.5.2 惰性提交优化 471

12.5.3 线性提交优化 471

12.6 远程场地的灾难恢复 471

12.6.1 系统对接管 473

12.6.2 接管时的会话切换 474

12.6.3 配置选项:一级安全、二级安全和极其安全 475

12.6.4 失败后的追赶处理 477

12.6.5 系统对设计小结 477

12.8 历史评注 478

12.7 小结 478

习题 479

答案 480

第六部分 事务型文件系统:一个资源管理器实例第13章 文件和缓冲区管理 483

13.1 引言 483

13.2 文件系统作为事务永久存储的基础 484

13.2.1 外存与主存 484

13.2.2 本书使用的外部存储模型 488

13.2.3 事务型文件和数据库管理器中的抽象层次 490

13.3 介质和文件管理 492

13.3.1 基本文件系统的对象和操作 492

13.3.2 磁盘空间管理 495

13.3.3 低层文件系统的目录管理 502

13.4.1 数据库缓冲区的工作原理 504

13.4 缓冲区管理 504

13.4.2 缓冲区管理器的实现问题 511

13.4.3 从缓冲区角度的写日志和恢复 519

13.4.4 缓冲区管理器性能优化 524

13.5 特殊问题 530

13.5.1 副文件 531

13.5.2 单级存储器 537

13.6 小结 541

13.7 历史评注 542

习题 544

答案 546

第14章 面向元组的文件系统 549

14.1 引言 549

14.2 元组到页面的映射 549

14.2.1 页面的内部组织 550

14.2.2 文件中空闲区的管理 554

14.2.3 元组标识 556

14.3 物理元组管理 562

14.3.1 属性值的物理表示 562

14.3.2 短元组的物理表示 564

14.3.3 元组属性值表示的特殊问题 573

14 3.4 长元组的物理表示 575

14.3.5 复杂元组和超长属性的物理表示 578

14.4 文件组织 581

14.4.1 管理型操作 582

14.4.2 扫描操作在不同文件组织上的抽象视图 584

14.4.3 顺序存取文件 589

14.4.4 系统顺序文件 594

14.4.5 相对文件 596

14.4.6 码顺序文件和散列文件 598

14.4.7 小结 598

14.5.1 聚簇文件 599

14.5 特殊问题 599

14.5.2 划分文件 600

14.5.3 使用事务来维护文件系统 601

14.54 目前数据库系统中的面向元组的文件系统 601

14.6 小结 602

习题 602

答案 604

第15章 存取路径 606

15.1 引言 606

15.2 实现关联存取路径的技术 607

15.3 通过散列文件进行关联存取 609

15.3.1 将码值折叠成数值型数据类型 610

15.3.2 评价散列函数的准则 611

15.3.3 散列文件的溢出处理 616

15.3.4 散列文件中页面的局部管理 618

15.3.5 散列关联存取的小结 619

15.4 B树 620

15.4.1 B树:基本思想 621

15.4.2 B树的性能方面 628

15.4.3 对B树的同步:面向页的观点 632

15.4.4 对B树的同步:面向元组的观点 634

15.4.5 B树的恢复操作 636

15.5 B树某些操作的实现样例 639

15.5.1 声明所有程序用到的数据结构 639

15.5.2 B树readkey()操作的实现 641

15.5.3 B树上的码区间封锁 642

15.5.4 B树插入操作的实现:简单实例 644

15.5.5 B树插入操作的实现:分裂实例 645

15.5.6 小结 647

15.6 特殊问题 647

15.6.1 可扩展散列 648

15.6.2 网格文件 652

15.6.3 hB树 656

15.7 小结 661

15.8 历史评注 661

习题 664

答案 666

第七部分 系统概览第16章 TP系统概览 669

16.1 引言 669

16.2 IMS 669

16.2.1 硬件和操作系统环境 670

16.2.2 工作流模型 671

16.2.3 程序隔离 674

16.2.4 主存数据库和字段调用 674

16.2.5 数据共享 675

16.2.6 改善的可用性与双工系统 675

16.2.8 IMS的最新演进 677

16.3 CICS和LU6.2 677

16.2.7 DB2 677

16.3.1 CICS概述 678

16.3.2 CICS服务 679

16.3.3 CICS工作流 680

16.3.4 CICS分布式事务处理 681

16.3.5 LU6.2 682

16.4 Guardian 90 684

16.4.1 Guardian:操作系统及硬件 685

16.4.2 Pathway、终端上下文和服务器类管理 686

16.4.3 事务管理 687

16.4.4 其他有意义的特性 692

16.5 DECdta 693

16.5.1 ACMS事务处理的三球工作流模型 693

16.5.2 ACMS服务 696

16.5.3 ACMS小结 697

16.5.4 VMS的事务管理支持 698

16.5.5 DECdta小结 701

16.5.6 可靠的事务路由器 701

16.6 X/Open DTP、OSI-TP、CCR 703

16.6.1 局部情况 704

16.6.2 分布式情况:服务和服务器 705

16.6.3 小结 706

16.7 其他系统 706

16.7.1 通用事务管理器 706

16.7.2 ADABASTPF 707

16.7.3 Encina 708

16.7.4 Tuxedo 710

16.8 小结 711

第八部分附录附录A 参考文献 713

附录B 数据结构和接口 731

附录C 词汇表 738

索引 774