这是国内第一本深度讲解如何架构与设计高并发Oracle数据库系统的著作,也是国内第一本系统讲解内存数据库TimesTen的专著。作者是拥有10余年Oracle从业经验的资深数据库架构师,本书的内容也得到了业界以盖国强为代表的数位数据库专家的一致认可。本书秉承大道至简的思想,技术与艺术并重,从技术、方法论、原理和思想等角度讲解了如何架构与设计高并发Oracle数据库系统。
高并发Oracle数据库系统的架构与设计主要内容从三个维度展开:首先是内部扩展的维度,深入探讨了高效B树索引、高效表设计、查询优化器等数据库架构设计与优化的核心技术,以及高并发Oracle数据库系统架构与设计的方法论和常见的高并发案例;其次是纵向扩展的维度,国内首次详细讲解了内存数据库TimesTen的基本使用、高可用架构设计、缓存应用、监控方法、数据备份与恢复、数据迁移以及高并发场景;最后是横向扩展的维度,详细讲解了如何使用GoldenGate构建数据库群,重点是结合链路原理的实现,介绍了拓展数据集成平台和异构数据库群的设计思路。此外,还从容灾和高并发的角度介绍了Data Guard的妙用,以及超出纯技术范围的一些最佳实践。
目录
- 推荐序一
- 推荐序二
- 前言
- 第一部分 内政篇
- 第1章 大道至简 2
- 1.1 初见高并发 2
- 1.1.1 从一次谈话说起 3
- 1.1.2 问题就在那里 4
- 1.1.3 你不是一个人在战斗 6
- 1.2 说句时髦话 8
- 1.2.1 谈谈去IOE 8
- 1.2.2 开源的作用域 9
- 1.3 在Oracle的世界里 10
- 1.3.1 数据库森林体系 10
- 1.3.2 大道至简 12
- 1.4 本章小结 13
- 第2章 高效B树索引 14
- 2.1 索引扫描识别 14
- 2.1.1 B树索引 15
- 2.1.2 全表扫描 16
- 2.1.3 ROWID扫描 17
- 2.1.4 索引唯一扫描 18
- 2.1.5 索引范围扫描 20
- 2.1.6 索引全扫描 21
- 2.1.7 索引快速全扫描 22
- 2.1.8 索引跳跃扫描 24
- 2.1.9 索引组合扫描 25
- 2.1.10 索引联立扫描 27
- 2.2 索引与排序 28
- 2.2.1 B树索引内部结构 28
- 2.2.2 输出排序 29
- 2.2.3 降序索引 34
- 2.2.4 聚合查询min()与max() 37
- 2.3 索引设计优化 40
- 2.3.1 索引选择度 40
- 2.3.2 数据分布的影响 41
- 2.3.3 索引聚簇因子 45
- 2.3.4 数据存储的影响 47
- 2.3.5 复合索引 50
- 2.3.6 索引被无视 54
- 2.4 索引分裂 58
- 2.4.1 分裂原理 59
- 2.4.2 实例分析 61
- 2.5 索引维护 70
- 2.5.1 为何重建索引 71
- 2.5.2 何时重建索引 73
- 2.5.3 如何重建索引 76
- 2.5.4 废旧索引清理 77
- 2.6 本章小结 78
- 第3章 高效表设计 79
- 3.1 数据生命周期管理 80
- 3.1.1 什么是数据生命周期管理 80
- 3.1.2 架构模型设计 81
- 3.1.3 数据分层存储 86
- 3.2 常用字段类型选择 87
- 3.2.1 VARCHAR2与CHAR 87
- 3.2.2 NUMBER与VARCHAR2 88
- 3.2.3 主键字段的选择 90
- 3.2.4 LOB字段 91
- 3.3 字段顺序 95
- 3.3.1 热字段靠前排 95
- 3.3.2 行宽需要控制 97
- 3.4 行链接与行迁移 99
- 3.4.1 行链接原理 99
- 3.4.2 行迁移原理 101
- 3.4.3 发现问题 101
- 3.4.4 解决问题 104
- 3.5 分区表的使用 105
- 3.5.1 何时使用分区表 105
- 3.5.2 分区表设计思路 106
- 3.5.3 分区表特性 106
- 3.6 适当的冗余 110
- 3.6.1 反范式建模 110
- 3.6.2 物化视图 113
- 3.6.3 结果集缓存 117
- 3.6.4 直接路径插入 120
- 3.7 碎片分析与整理 122
- 3.7.1 碎片的产生 123
- 3.7.2 DBMS_SPACE包 125
- 3.7.3 碎片的整理 130
- 3.8 本章小结 138
- 第4章 查询优化器 139
- 4.1 优化器概述 140
- 4.1.1 优化器简介 140
- 4.1.2 参数配置 143
- 4.2 像优化器一样思考 147
- 4.2.1 成本计算机制 147
- 4.2.2 成本计算公式推导 150
- 4.3 统计信息管理 155
- 4.3.1 统计信息分类 156
- 4.3.2 制定收集策略 158
- 4.3.3 管理收集方式 164
- 4.3.4 制定备份策略 168
- 4.3.5 收集直方图 174
- 4.4 执行计划管理 175
- 4.4.1 获取执行计划 175
- 4.4.2 固化执行计划 176
- 4.5 性能影响分析 183
- 4.6 数据库重放 188
- 4.6.1 普通数据库重放特性 188
- 4.6.2 强化数据库重放特性 193
- 4.7 本章小结 195
- 第5章 常见高并发案例 196
- 5.1 锁相关问题 196
- 5.1.1 Lock、Latch、Pin、Mutex 196
- 5.1.2 游标争用问题解决 198
- 5.1.3 索引争用问题解决 203
- 5.1.4 LOB争用问题解决 207
- 5.1.5 全表锁问题解决 213
- 5.2 REDO相关问题 214
- 5.2.1 REDO块的大小 214
- 5.2.2 DIO与AIO 218
- 5.2.3 进程优先级 219
- 5.2.4 log file sync分析 221
- 5.3 本章小结 222
- 第二部分 纵横篇
- 第6章 TimesTen内存数据库 224
- 6.1 TimesTen概述 225
- 6.1.1 TimesTen历史与定位 225
- 6.1.2 TimesTen应用场景 226
- 6.1.3 TimesTen技术架构 228
- 6.2 开始使用 233
- 6.2.1 TimesTen安装 233
- 6.2.2 参数配置 237
- 6.2.3 创建独立实例 239
- 6.2.4 创建缓存实例 241
- 6.3 缓存集合管理 242
- 6.3.1 只读缓存集合 244
- 6.3.2 AWT缓存集合 248
- 6.3.3 SWT缓存集合 251
- 6.3.4 自定义缓存集合 254
- 6.3.5 多表缓存集合 258
- 6.3.6 缓存老化 259
- 6.3.7 缓存过滤器 261
- 6.3.8 动态缓存集合 261
- 6.3.9 PassThrough属性 263
- 6.4 高可用复制架构 263
- 6.4.1 复制原理 264
- 6.4.2 ASP架构 266
- 6.5 高可用网格架构 273
- 6.5.1 无网格双活架构 274
- 6.5.2 网格双活架构 274
- 6.5.3 ASP网格双活架构 280
- 6.6 分库分表 283
- 6.6.1 只读缓存集合的分库分表 283
- 6.6.2 AWT缓存集合的分库分表 285
- 6.7 TimesTen设计与管理 286
- 6.7.1 表设计与管理 286
- 6.7.2 索引管理 291
- 6.7.3 统计信息与执行计划 294
- 6.8 TimesTen性能监控 299
- 6.8.1 关键指标 299
- 6.8.2 SQL监控 300
- 6.8.3 监控报告 302
- 6.8.4 复制监控 305
- 6.8.5 自动刷新监控 307
- 6.9 TimesTen备份与恢复 309
- 6.9.1 数据库备份 309
- 6.9.2 数据库恢复 311
- 6.9.3 数据迁移 313
- 6.10 TimesTen高并发场景 315
- 6.10.1 场景选择 316
- 6.10.2 并发场景测试 317
- 6.11 本章小结 318
- 第7章 GoldenGate构建数据库群 319
- 7.1 GoldenGate概述 319
- 7.1.1 小核心,大外围 320
- 7.1.2 GoldenGate应用场景 321
- 7.1.3 GoldenGate技术架构 323
- 7.1.4 数据库群的制约因素 328
- 7.2 开始使用 329
- 7.2.1 GoldenGate安装 329
- 7.2.2 GoldenGate配置 331
- 7.2.3 基本链路的搭建 334
- 7.2.4 GoldenGate的监控 339
- 7.3 高级应用 343
- 7.3.1 DDL功能支持 343
- 7.3.2 用户级复制 345
- 7.4 异构数据库群 347
- 7.4.1 异构字符集数据库间复制 347
- 7.4.2 异构数据库间复制 351
- 7.5 本章小结 353
- 第8章 Data Guard的妙用 354
- 8.1 “T-1”交易数据库 354
- 8.1.1 实现原理与应用场景 355
- 8.1.2 “T-1”备库简介 356
- 8.1.3 “T-1”库闪回简介 357
- 8.1.4 “T-1”数据库搭建 358
- 8.2 ADG实现读写分离 361
- 8.2.1 ADG架构简介 361
- 8.2.2 ADG数据库搭建 362
- 8.3 本章小结 365
- 第9章 最佳实践 366
- 9.1 术 366
- 9.1.1 技术回顾 367
- 9.1.2 规矩方圆 369
- 9.1.3 穿越之眼 370
- 9.2 道 370
- 9.2.1 数据库架构师 370
- 9.2.2 沟通之道 371
- 9.3 势 374
- 9.4 本章小结 375