数据库技术丛书 高并发Oracle数据库系统的架构与设计
作者:侯松 著
出版时间:2014
丛编项: 数据库技术丛书
内容简介
本书的主题是介绍Oracle数据库在高并发问题上分析和解决方案。主要从“内政篇”和“纵横篇”两方面展开主题,前者介绍Oracle本身的设计、管理、优化,以达到高并发性能提升的目的;后者介绍通过一些外部技术和工具(主要也是Oracle的产品)来帮忙Oracle数据库进行纵向扩展和横向扩展,以达到其高并发处理能力的扩展和提升。
目录
目 录
推荐序一
推荐序二
前言
第一部分 内政篇
第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