目 錄
推薦序一
推薦序二
前言
第一部分 內政篇
第1章 大道至簡 2
1.1 初見高并發(fā) 2
1.1.1 從一次談話說起 3
1.1.2 問題就在那里 4
1.1.3 你不是一個人在戰(zhàn)斗 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 索引設計優(yōu)化 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 發(fā)現問題 101
3.4.4 解決問題 104
3.5 分區(qū)表的使用 105
3.5.1 何時使用分區(qū)表 105
3.5.2 分區(qū)表設計思路 106
3.5.3 分區(qū)表特性 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章 查詢優(yōu)化器 139
4.1 優(yōu)化器概述 140
4.1.1 優(yōu)化器簡介 140
4.1.2 參數配置 143
4.2 像優(yōu)化器一樣思考 147
4.2.1 成本計算機制 147
4.2.2 成本計算公式推導 150
4.3 統(tǒng)計信息管理 155
4.3.1 統(tǒng)計信息分類 156
4.3.2 制定收集策略 158
4.3.3 管理收集方式 164
4.3.4 制定備份策略 168
4.3.5 收集直方圖 174
4.4 執(zhí)行計劃管理 175
4.4.1 獲取執(zhí)行計劃 175
4.4.2 固化執(zhí)行計劃 176
4.5 性能影響分析 183
4.6 數據庫重放 188
4.6.1 普通數據庫重放特性 188
4.6.2 強化數據庫重放特性 193
4.7 本章小結 195
第5章 常見高并發(fā)案例 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 進程優(yōu)先級 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 創(chuàng)建獨立實例 239
6.2.4 創(chuàng)建緩存實例 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 動態(tài)緩存集合 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 統(tǒng)計信息與執(zhí)行計劃 294
6.8 TimesTen性能監(jiān)控 299
6.8.1 關鍵指標 299
6.8.2 SQL監(jiān)控 300
6.8.3 監(jiān)控報告 302
6.8.4 復制監(jiān)控 305
6.8.5 自動刷新監(jiān)控 307
6.9 TimesTen備份與恢復 309
6.9.1 數據庫備份 309
6.9.2 數據庫恢復 311
6.9.3 數據遷移 313
6.10 TimesTen高并發(fā)場景 315
6.10.1 場景選擇 316
6.10.2 并發(fā)場景測試 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的監(jiān)控 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 規(guī)矩方圓 369
9.1.3 穿越之眼 370
9.2 道 370
9.2.1 數據庫架構師 370
9.2.2 溝通之道 371
9.3 勢 374
9.4 本章小結 375