本書介紹與 Oracle 數(shù)據(jù)庫性能相關(guān)的方方面面,涵蓋了 Oracle 的體系架構(gòu),其背后的運(yùn)行機(jī)制包括事務(wù)、鎖與閂、多版本并發(fā),各種 Oracle 高級特性如分區(qū)、并行執(zhí)行、直接路徑操作,以及大數(shù)據(jù)導(dǎo)入 / 導(dǎo)出性能優(yōu)化,并用具體的例子來解釋每個特性,它是如何工作的、其限制是什么。
本書用通俗易懂的方式介紹如何理解并掌握 Oracle SQL 執(zhí)行計劃,如何高效地掌握 Oracle SQL 性能分析與優(yōu)化,這是擺在眾多開發(fā)人員面前的兩座大山。
本書不僅是從 Oracle 數(shù)據(jù)庫與 SQL 優(yōu)化本身的角度探討高性能架構(gòu)設(shè)計,更重要的是從整個應(yīng)用層、綜合中間件角度考慮各特性是否適合采用 Oracle 實現(xiàn),如何在 Java 及 JDBC、 MyBatis 中優(yōu)化。為此多個章節(jié)專門探討 Oracle 不擅長的特性,以及如何在 Java 和中間件中更好地實現(xiàn)它們。
本書適合具有一定 Oracle 數(shù)據(jù)庫經(jīng)驗的開發(fā)人員和數(shù)據(jù)庫管理員閱讀。
張君華,金融證券企業(yè)級系統(tǒng)架構(gòu)師,曾負(fù)責(zé)多省商品清算所架構(gòu)設(shè)計,新一代基金登記過戶系統(tǒng)架構(gòu)設(shè)計,擁有豐富的一線金融系統(tǒng)架構(gòu)設(shè)計和性能優(yōu)化實戰(zhàn)經(jīng)驗。主要研究方向包括中臺建設(shè)、微服務(wù)、云原生架構(gòu)、Oracle&MySQL&PostgreSQL、分布式并行清算、MPP等。
第 1 章? 實現(xiàn)高性能系統(tǒng)的基礎(chǔ)?1
1.1 何為高性能2
1.2 為什么仍需要高性能設(shè)計 4
1.3 直到系統(tǒng)跑不下去了才去重構(gòu) 5
1.4 保持高性能需要持續(xù)維護(hù) 6
1.5 系統(tǒng)性能低下的原因 7
1.6 影響系統(tǒng)性能的合理因素13
1.7 基準(zhǔn)性能測試15
1.8 高性能系統(tǒng)設(shè)計原則17
第 2 章? 規(guī)劃性能友好的架構(gòu)23
2.1 典型系統(tǒng)架構(gòu) 24
2.2 分布式架構(gòu)的挑戰(zhàn)28
2.3 何為友好的架構(gòu)設(shè)計 30
2.4 盡早確定具體技術(shù)棧和接口規(guī)范 36
2.5 確定可用的特性和軟件版本38
2.6 開放思路43
2.7 普通商用服務(wù)器的當(dāng)前現(xiàn)狀46
2.8 虛擬化和云主機(jī)的影響 56
2.9 限制性能友好技術(shù)架構(gòu)的原因 56
2.10 按照規(guī)范執(zhí)行后,性能和擴(kuò)展性還是不理想 58
2.11 多租戶應(yīng)用的挑戰(zhàn)59
第 3 章? 理解 Oracle 運(yùn)行機(jī)制61
3.1 基于磁盤數(shù)據(jù)庫的弱項 62
3.2 花 100 萬元買來當(dāng)擺設(shè)65
3.3 選擇標(biāo)準(zhǔn)版還是企業(yè)版.66
3.4 Oracle 體系架構(gòu)概覽 68
3.5 Oracle 事務(wù)79
3.6 多版本并發(fā)控制90
3.7 Redo 日志93
3.8 Undo 日志107
第 4 章? 高效 Oracle 設(shè)計114
4.1 設(shè)計良好的 Oracle 表 115
4.2 除了常規(guī)表外還有哪些選擇126
4.3 深入理解 Oracle 索引 131
4.4 深入理解分區(qū)151
4.5 深入理解 Oracle 并行執(zhí)行161
4.6 直接路徑操作 170
4.7 深入理解 Oracle 內(nèi)存列式存儲174
4.8 熟悉分析函數(shù)180
4.9 不建議使用 Oracle 實現(xiàn)的場景182
第 5 章? 高并發(fā)和鎖186
5.1 各種類型的高并發(fā)187
5.2 影響并發(fā)性的因素189
5.3 鎖 - 共享資源訪問控制機(jī)制194
5.4 Oracle 中的鎖197
5.5 Java 中的并發(fā)訪問控制210
5.6 分布式鎖的實現(xiàn) 238
5.7 選擇正確的鎖實現(xiàn)方式244
第 6 章? 應(yīng)用層高性能設(shè)計247
6.1 領(lǐng)域模型、數(shù)據(jù)庫模型和 Java 類248
6.2 把掌握和維護(hù)中間件重視起來252
6.3 充分利用各級緩存253
6.4 JDBC、 OCI 優(yōu)化257
6.5 最小化網(wǎng)絡(luò)交互263
6.6 分頁查詢優(yōu)化273
6.7 統(tǒng)一模式功能使用 AOP277
6.8 通知型功能使用消息隊列284
6.9 日志優(yōu)化 285
6.10 根據(jù)上下文自適應(yīng)優(yōu)化 286
6.11 核心邏輯避免通用代碼生成.290
6.12 該用 PL/SQL 時不要故意避開292
第 7 章? Oracle 實例與系統(tǒng)優(yōu)化295
7.1 Oracle 實例優(yōu)化概述 296
7.2 內(nèi)存優(yōu)化297
7.3 存儲優(yōu)化303
7.4 初始化參數(shù)優(yōu)化310
7.5 其他 Oracle 實例優(yōu)化322
7.6 高可用 / 可恢復(fù)性相關(guān)性能影響328
7.7 Linux 優(yōu)化 .333
第 8 章? 系統(tǒng)性能分析與診斷338
8.1 整體性能監(jiān)控與分析 339
8.2 Linux 性能分析343
8.3 Java 性能分析348
8.4 Oracle 實例性能分析355
8.5 Oracle 典型等待事件分析370
第 9 章? 精通執(zhí)行計劃分析411
9.1 SQL 內(nèi)部執(zhí)行過程 412
9.2 SQL 性能分析的關(guān)鍵.414
9.3 Oracle 性能分析工具 415
9.4 高效掌握執(zhí)行計劃421
9.5 Oracle 執(zhí)行計劃精解 427
9.6 其他執(zhí)行計劃相關(guān)要點450
第 10 章? Oracle?SQL 性能分析與優(yōu)化458
10.1 優(yōu)化器459
10.2 統(tǒng)計信息476
10.3 直方圖和綁定變量窺視498
10.4 深入理解 Oracle 優(yōu)化器提示504
10.5 典型性能優(yōu)化案例531
第 11 章? 大數(shù)據(jù)導(dǎo)入 / 導(dǎo)出優(yōu)化544
11.1 常見的大數(shù)據(jù)處理場景介紹545
11.2 大數(shù)據(jù)導(dǎo)入 / 導(dǎo)出方案 547
11.3 其他優(yōu)化578