当前位置:首页 > 工业技术
Oracle性能优化求生指南
Oracle性能优化求生指南

Oracle性能优化求生指南PDF电子书下载

工业技术

  • 电子书积分:17 积分如何计算积分?
  • 作 者:(澳)Guy Harrison著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2012
  • ISBN:9787115291141
  • 页数:555 页
图书介绍:本书是一本优化Oracle性能的快速指南,主要介绍了性能优化的最有效办法,充分利用Oracle核心工具追踪、检测和诊断性能,高效的数据库逻辑和物理设计、事务设计与API使用,SQL和PL/SQL调整,优化内存和物理磁盘I/O,以及调整RAC数据库等。
《Oracle性能优化求生指南》目录

第一部分 方法、概念和工具 2

第1章Oracle性能调优:一种系统化方法 2

1.1 Oracle性能调优简史 3

1.2超越表面分析法 3

1.3第一阶段:最小化应用负载 5

1.4第二阶段:降低争用和瓶颈 6

1.5第三阶段:降低物理IO 7

1.6第四阶段:优化磁盘IO 8

1.7本章小结 9

第2章Oracle体系结构与基本概念 11

2.1 Oracle API 11

2.1.1创建游标 13

2.1.2检查缓存的SQL语句 13

2.1.3解析SQL语句 13

2.1.4关联绑定变量 14

2.1.5执行SQL语句 15

2.1.6提取记录 15

2.1.7使用批量提取 15

2.1.8 处理结果集 16

2.1.9关闭游标 16

2.1.10优化Oracle API调用 16

2.2 Oracle查询优化器 16

2.2.1基于成本的优化 17

2.2.2优化器目标 18

2.2.3优化器统计信息 18

2.2.4绑定变量窥视与自适应游标共享 19

2.2.5提示 19

2.2.6存储概要、SQL概要和SQL计划基线 19

2.3事务和锁 20

2.4 Oracle服务器体系结构 20

2.4.1实例与数据库 21

2.4.2系统全局区 22

2.4.3数据缓存 22

2.4.4程序全局区 22

2.4.5内存管理 23

2.5段与文件 23

2.5.1表 23

2.5.2索引 24

2.5.3块、区间、段以及分区 24

2.5.4表空间与数据文件 25

2.5.5回滚段 25

2.5.6重做日志与归档日志 25

2.5.7闪回日志 25

2.6 服务器进程 26

2.7后台进程 26

2.8真正应用集群 27

2.9 本章小结 28

第3章 实用工具 29

3.1生成SQL语句的执行计划 29

3.1.1计划表 30

3.1.2研究缓存的SQL 33

3.1.3 DBMS_XPLAN 35

3.1.4解释执行计划 39

3.1.5虚拟索引 43

3.2跟踪Oracle的执行 44

3.2.1从当前会话中调用跟踪 44

3.2.2识别跟踪文件 45

3.2.3获取跟踪状态 45

3.2.4在其他会话中调用跟踪 46

3.2.5通过MODULE、ACTION或SERVICE进行跟踪 47

3.2.6使用登录触发器来启用跟踪 47

3.2.7定位跟踪文件 48

3.2.8其他特殊化的跟踪 48

3.3使用tkprof格式化跟踪文件 49

3.3.1 tkprof的排序选项 49

3.3.2其他tkprof选项 50

3.3.3合并多个SQL跟踪文件 51

3.3.4解释tkprof的输出结果 51

3.3.5 tkprof中的执行计划 53

3.3.6等待统计信息与tkprof 54

3.3.7 tkprof的替代品 54

3.4在SQL*PLUS中使用AUTOTRACE 55

3.5监控Oracle服务器 56

3.5.1 V$表接口 56

3.5.2等待接口 57

3.5.3时间模型 59

3.5.4整合时间模型与等待接口 61

3.5.5 Oracle企业管理器 62

3.5.6 SPOTLIGHT ON ORACLE 63

3.6本章小结 64

第二部分 应用和数据库设计 66

第4章 数据库逻辑设计和物理设计 66

4.1逻辑数据模型 66

4.1.1标准化和第三范式 66

4.1.2数据类型选择 67

4.1.3人造键 67

4.1.4数据仓库设计 68

4.2逻辑模型到物理模型的映射 68

4.2.1将实体或类映射成表 69

4.2.2选择表的类型 71

4.2.3数据类型和精度 71

4.2.4可选的属性和NULL值 72

4.2.5列的顺序 73

4.2.6探索Oracle对象模型 73

4.3反规范化 74

4.3.1复制列值以避免表联结 74

4.3.2概要表 75

4.3.3垂直分区 75

4.3.4实施反规范化 76

4.4星型模式设计 76

4.4.1星型模式基础 76

4.4.2雪花模式 77

4.4.3维度层次结构 79

4.4.4聚集和物化视图 80

4.4.5物化视图最佳实践 81

4.5物理存储方案 82

4.5.1数据段存储手工管理和自动管理 82

4.5.2并行插入和空闲块链表 82

4.5.3 PCTFREE与PCTUSED 83

4.5.4压缩 84

4.5.5大数据字段LOB的存储 85

4.6分区 86

4.6.1分区的类型 86

4.6.2组合分区 87

4.6.3选择一个分区策略 87

4.6.4企业管理器的分区顾问 87

4.7本章小结 89

第5章 索引与簇 91

5.1 Oracle索引与簇机制的概况 91

5.2 B*树索引 91

5.2.1索引选择性 93

5.2.2唯一索引 93

5.2.3隐含索引 94

5.2.4组合索引 94

5.2.5索引跳跃扫描 95

5.2.6创建组合索引的指导原则 96

5.2.7索引合并 96

5.2.8索引中的空值 97

5.2.9反转键(Reverse Key)索引 97

5.2.10索引压缩 98

5.2.11函数索引 98

5.2.12外键与锁 99

5.2.13索引与分区 100

5.3位图索引 101

5.3.1位图索引的特性 101

5.3.2位图索引的缺陷 102

5.3.3位图索引与基数 103

5.3.4位图索引合并 104

5.3.5位图联结索引 104

5.4索引的开销 106

5.5索引组织表 109

5.5.1配置溢出段 111

5.5.2定期重建索引组织表(IOT) 114

5.6簇 114

5.6.1索引簇 114

5.6.2散列簇 116

5.7嵌套表 121

5.8选择最优的索引策略 123

5.9本章小结 124

第6章 应用设计与实现 125

6.1 SQL语句管理 125

6.1.1优化解析 125

6.1.2避免执行不必要的SQL语句 129

6.2批量接口 133

6.2.1实现批量提取 133

6.2.2批量插入 135

6.3事务设计 135

6.3.1隔离级别 136

6.3.2事务与锁 137

6.3.3 Oracle中的行级锁 138

6.3.4应用的锁策略 139

6.4使用存储过程来降低网络流量 141

6.5本章小结 145

第三部分SQL和PL/SQL调优 148

第7章 优化器的优化 148

7.1 Oracle优化器 148

7.1.1什么是成本 148

7.1.2优化器目标 149

7.1.3选择性和基数 149

7.1.4查询转换 149

7.1.5成本计算 150

7.1.6对象统计信息 151

7.1.7直方图 152

7.1.8绑定变量窥探 154

7.1.9自适应游标共享 155

7.1.10数据库参数 156

7.1.11系统统计信息 159

7.1.12收集统计信息 160

7.2使用DBMS_STAT 162

7.2.1 DBMS_STATS的储存过程和参数 163

7.2.2设置DBMS_STATS的系统默认值 165

7.2.3使用METHOD OPT创建直方图 165

7.2.4抽样 166

7.2.5分区统计信息 167

7.2.6扩展的统计信息 167

7.2.7锁定统计信息 169

7.2.8系统统计信息 170

7.2.9导出和导入统计信息 170

7.2.10操纵统计信息 170

7.3本章小结 171

第8章 执行计划管理 172

8.1提示 172

8.1.1使用提示来改变访问路径 174

8.1.2使用提示来改变联结顺序 174

8.1.3提示详述中的错误 175

8.2存储提纲 175

8.2.1创建存储提纲以稳定执行计划 176

8.2.2侵入存储提纲 177

8.3 SQL调优集 179

8.3.1手动创建调优集 180

8.3.2在企业管理器中创建调优集 181

8.4 SQL概要和SQL调优顾问 182

8.4.1使用DBMS_SQLTUNE 183

8.4.2索引建议 185

8.4.3企业管理器中的SQL优化 186

8.4.4使用SQL访问顾问进行交叉SQL调优 187

8.5 SQL基线 189

8.5.1创建基线 189

8.5.2进化基线 191

8.5.3自动化和配置基线 194

8.5.4固化的基线 194

8.5.5在ORACLE企业管理器中管理基线 195

8.6本章小结 195

第9章 表访问调优 197

9.1单值查询 197

9.1.1在表和索引扫描间选择 198

9.1.2位图索引和单值查询 201

9.1.3散列聚簇和单值查询 202

9.2避免“意外的”表扫描 203

9.2.1不等条件 203

9.2.2空值查询 205

9.2.3查找非空值 207

9.2.4在可为空的列上创建索引 207

9.2.5无意中通过使用函数而禁用了索引 208

9.2.6函数索引 208

9.2.7函数索引和统计 209

9.2.8虚拟列 211

9.3多列查询 212

9.3.1使用组合索引 212

9.3.2索引合并 213

9.3.3唯一性与覆盖索引 213

9.4查找范围 214

9.4.1无界范围扫描 214

9.4.2有界范围扫描 216

9.4.3范围查询 217

9.5使用LIKE运算符 219

9.6多值单列查找 220

9.7优化必要的全表扫描 221

9.7.1降低高水位线 221

9.7.2优化PCTFREE和PCTUSED 222

9.7.3减少记录长度 223

9.7.4压缩表 223

9.7.5使数据库IO更高效 225

9.7.6使用抽样选项 225

9.7.7并行查询 226

9.7.8快速全索引扫描 227

9.7.9分区 228

9.8本章小结 229

第10章 联结与子查询 231

10.1联结类型 231

10.2联结方法 232

10.2.1嵌套循环联结 232

10.2.2排序合并联结 233

10.2.3散列联结 234

10.3选择正确的联结方法 235

10.3.1排序合并/散列与嵌套循环的对比 235

10.3.2排序合并和散列联结对比 235

10.4优化联结 239

10.4.1优化嵌套循环联结 239

10.4.2优化排序合并联结与散列联结 240

10.5避免联结 241

10.5.1反范式化 242

10.5.2索引聚簇 242

10.5.3物化视图 243

10.5.4位图联结索引 244

10.6联结顺序 244

10.7特殊联结 246

10.7.1外联结 246

10.7.2星型联结 248

10.7.3层级查询 252

10.8子查询 254

10.8.1简单子查询 254

10.8.2关联子查询 256

10.8.3反联结子查询 257

10.8.4半联结子查询 259

10.9本章小结 260

第11章 排序、分组与集合操作 261

11.1排序操作 261

11.1.1最优、一次和多次排序 262

11.1.2衡量排序活动 263

11.1.3跟踪排序活动 264

11.1.4使用索引规避排序 265

11.2分组与聚合 267

11.2.1聚合操作 267

11.2.2最大值和最小值 268

11.2.3“前N”查询 269

11.2.4计算一张表的记录数 271

11.2.5分组操作 271

11.2.6 HAvING与WHERE 273

11.3集合操作 274

11.3.1 uNION与UNION ALL 275

11.3.2 INTERSECT 275

11.3.3 MINus 277

11.3.4集合操作和它们的替代方法 278

11.4本章小结 279

第12章 使用和调优PL/SQL 280

12.1 PL/SQL的性能优势 280

12.1.1过程化的方法 280

12.1.2减少网络开销 280

12.1.3分解并攻克海量的SQL语句 281

12.2衡量PL/SQL的性能 281

12.2.1衡量PL/SQL的开销 281

12.2.2使用DBMS_PROFILER 283

12.2.3 11g的分层剖析器 284

12.3数据访问优化 287

12.3.1数组处理和BULK COLLECT 287

12.3.2对INSERT语句进行数组处理 289

12.3.3绑定变量和动态SQL 290

12.4 PL/SQL代码优化 292

12.4.1首先调优SQL 292

12.4.2 PLSQL_OPTIMIZE_LEVEL 292

12.4.3循环优化 293

12.4.4 “短路”表达式 295

12.4.5在IF和CASE语句中表达式的顺序 297

12.4.6递归 298

12.4.7 NOCOPY子句 299

12.4.8关联数组 301

12.5其他优化 302

12.5.1本地编译 302

12.5.2内联PL/SQL 304

12.5.3数据类型 306

12.5.4使用JAVA计算 307

12.5.5函数缓存 308

12.6 DML触发器的性能 309

12.6.1 UPDATE OF和WHEN子句 309

12.6.2 BEFORE和AFTER ROW触发器 310

12.7本章小结 311

第13章 并行SQL 312

13.1理解并行SQL 312

13.1.1并行进程和并行度 314

13.1.2并行子进程池 315

13.1.3并行查询IO 316

13.1.4并行性能收益 316

13.2决定何时使用并行处理 317

13.2.1服务器计算机有多个CPU 318

13.2.2被访问的数据放置在多个磁盘驱动器上 318

13.2.3使用并行的SQL是长时间运行的或者资源敏感的 318

13.2.4 SQL执行最少一次全表、索引或分区扫描 319

13.2.5主机有空闲的能力 319

13.2.6 SQL是调优过的 319

13.3配置并行处理 319

13.3.1确定并行度 319

13.3.2并行提示 321

13.3.3并行配置的参数 321

13.4监控并行SQL 323

13.4.1并行语句的执行计划 323

13.4.2跟踪并行执行 325

13.4.3 V?PQ_TQSTAT视图 326

13.4.4其他的统计数据 327

13.5优化并行的性能 328

13.5.1从一个优化过的串行执行的SQL开始 328

13.5.2确保这个SQL适合并行执行 329

13.5.3确保系统适合配置支持并行执行 329

13.5.4确保执行计划的所有部分都做了并行化 329

13.5.5确保请求的并行度是可实现的 331

13.5.6监控实际的并行度 331

13.5.7检查进程间数据和负载的偏差 332

13.6其他的并行主题 333

13.6.1 RAC的并行执行 333

13.6.2并行的索引查找 334

13.6.3并行DML 335

13.6.4并行DDL 339

13.7本章小结 340

第14章DML调优 342

14.1 DML性能基础 342

14.1.1 Where子句优化 342

14.1.2索引开销 343

14.1.3触发器开销 344

14.1.4参照完整性 345

14.2INSERT操作的特定优化 346

14.2.1批量处理 346

14.2.2直接路径插入 347

14.2.3多表插入 349

14.2.4手动段存储管理(MSSM)和空闲列表 351

14.2.5并行DML 351

14.3删除操作 351

14.3.1 TRUNCATE 351

14.3.2分区 352

14.3.3 CREATE TABLE AS SELECT 352

14.4更新和合并操作 353

14.4.1关联更新 353

14.4.2优化MERGE操作 355

14.5 COMMIT优化 357

14.5.1 CoMMIT频率 358

14.5.2批量和NOWAIT提交 358

14.5.3 NOLOGGING 360

14.6本章小结 361

第四部分 最小化争用 364

第15章 锁争用 364

15.1锁的类型和模式 364

15.2等待锁 367

15.3监控和分析锁 368

15.3.1锁等待的统计数据 368

15.3.2发现导致锁争用的SQL 371

15.3.3度量指定事务的锁争用 373

15.3.4跟踪锁行为 375

15.3.5阻塞者和等待者 376

15.4应用程序的锁策略 379

15.5行级锁什么时候会失败 380

15.5.1没有索引的外键 380

15.5.2事务表等待 381

15.5.3位图索引 382

15.5.4直接路径插入 383

15.6系统锁 383

15.6.1高水位标记enqueue 384

15.6.2空间事务enqueue 384

15.6.3序列缓存enqueue 384

15.6.4用户锁enqueue 385

15.6.5其他的系统锁 385

15.7本章小结 386

第16章 闩锁和互斥争用 387

16.1闩锁和互斥架构的简介 387

16.1.1 GETS、SPINS和SLEEPS 388

16.1.2互斥 388

16.2度量和诊断闩锁/互斥争用 389

16.2.1识别单个的闩锁 390

16.2.2发现与闩锁等待相关的SQL和段 391

16.3特定的闩锁和互斥场景 392

16.3.1 Library Cache Mutex等待 393

16.3.2 Library Cache Pin 394

16.3.3 Shared Pool Latch 395

16.3.4 Cache Buffers Chains Latch 395

16.3.5 Row Cache Object 闩锁 397

16.3.6其他的闩锁场景 398

16.4闩锁争用是不可避免的吗 399

16.4.1改变_SPIN_COUNT怎么样 399

16.4.2自旋计数、闩锁争用和吞吐量 400

16.4.3设置单个闩锁的自旋计数 402

16.5本章小结 402

第17章 共享内存争用 404

17.1缓冲区高速缓存架构 404

17.2空闲缓冲块等待 406

17.2.1 DBWR直接和异步IO 407

17.2.2空闲缓冲块等待的其他补救措施 409

17.3恢复写进程等待 410

17.3.1提高闪回日志IO 411

17.3.2增加闪回日志缓冲的大小 412

17.4缓冲忙等待 414

17.4.1度量缓冲忙 414

17.4.2缓冲忙等待的传统原因 414

17.4.3缓冲忙和热块 415

17.5重做日志缓冲等待 417

17.6本章小结 419

第五部分 优化内存 422

第18章 缓冲区高速缓存调优 422

18.1缓冲区高速缓存的原理 422

18.1.1最近最少使用列表 423

18.1.2表扫描处理 423

18.1.3 CACHE属性 424

18.1.4直接路径IO 424

18.2缓冲区高速缓存配置和调优 425

18.2.1监控缓冲区高速缓存 425

18.2.2缓冲区高速缓存命中率 426

18.2.3多个缓冲区高速缓存 428

18.2.4设置缓冲区高速缓存的大小 430

18.3自动共享内存管理 433

18.3.1实现ASMM 433

18.3.2监控重设大小操作 434

18.3.3调优ASMM 435

18.3.4非默认池 436

18.3.5内存抖动 437

18.4本章小结 439

第19章 优化PGA内存 440

19.1 IO和PGA内存 440

19.2 PGA内存管理 441

19.2.1 PGA AGGREGATE TARGET 441

19.2.2会话的PGA限制 442

19.3测量PGA的使用和效率 443

19.3.1会话的PGA利用率 445

19.3.2测量临时IO等待时间 446

19.3.3测量工作区活动 448

19.4用V?PGA_TARGET_ADVICE来设置PGA的大小 449

19.5覆写PGA总量目标 452

19.6本章小结 454

第20章 其他的内存管理主题 455

20.1优化整体的Oracle内存 455

20.1.1 IO等待时间和内存优化 455

20.1.2使用顾问来分配PGA和缓冲区高速缓存的内存 458

20.1.3 Oracle 11g的自动化内存管理 464

20.2结果集缓存 470

20.2.1启用和配置结果集缓存 471

20.2.2结果集缓存的统计数据 471

20.2.3结果集缓存的依赖 474

20.2.4结果集缓存闩锁 474

20.3其他的内存优化 476

20.3.1设置共享池的大小 476

20.3.2设置大池的大小 478

20.3.3重做日志缓存 478

20.3.4锁定SGA 478

20.4本章小结 479

第六部分IO调优和集群 482

第21章 磁盘IO调优基础 482

21.1磁盘IO的概念 482

21.1.1服务时间和吞吐量 482

21.1.2排队 483

21.1.3磁盘驱动器:慢和正在变得更慢 483

21.1.4磁盘容量和数据分布 484

21.2 Oracle IO架构 484

21.2.1数据文件单块读 485

21.2.2多块读 485

21.2.3直接路径读 486

21.2.4临时直接路径IO 486

21.2.5数据文件写IO 486

21.2.6直接路径写 487

21.2.7重做日志IO 487

21.2.8归档日志IO 487

21.2.9闪回IO 488

21.2.10控制文件IO 488

21.3度量和监控Oracle IO 488

21.3.1 IO等待次数 488

21.3.2监控数据文件IO 492

21.3.3 IO基准测试 494

21.4优化数据文件IO 495

21.4.1最小化IO延时 495

21.4.2最大化IO吞吐量 496

21.4.3条带化策略 497

21.4.4 RAID阵列 497

21.4.5隔离数据文件IO 500

21.5重做和归档优化 500

21.5.1交替和分发日志 501

21.5.2重做和归档设备的细粒度条带化 501

21.5.3对重做日志使用RAID5大声说不 502

21.5.4重做日志大小 503

21.6闪回日志 506

21.7本章小结 507

第22章 高级IO技术 508

22.1自动存储管理 508

22.1.1 ASM架构 509

22.1.2 ASM监控 510

22.1.3 ASM调优 515

22.2固态磁盘(SSD) 520

22.2.1基于闪存的SSD 520

22.2.2基于随机存储器的DDRSSD 520

22.2.3 混合的SSD 521

22.2.4为Oracle数据库使用SSD 521

22.3 EXADATA存储服务器 522

22.4数据库块大小 522

22.5本章小结 524

第23章 优化RAC 525

23.1 RAC概览 525

23.1.1全局缓存请求 526

23.1.2 RAC调优原则 528

23.1.3单实例调优和RAC 528

23.2度量集群开销 529

23.3减少全局缓存延时 532

23.3.1度量全局缓存延时 532

23.3.2检查内部互连 534

23.3.3内部互连问题的信号 536

23.4优化内部互连 537

23.4.1网络硬件和协议 537

23.4.2以太网特大帧 537

23.4.3 UDP缓冲大小 538

23.4.4 LMS等待 539

23.5集群负载均衡 541

23.5.1评估集群负载均衡 541

23.5.2集群负载均衡和服务 544

23.5.3 RAC负载均衡服务 547

23.6最小化全局缓存请求 548

23.6.1高的全局缓存请求比例的原因 548

23.6.2度量全局缓存请求比例 549

23.6.3减少全局缓存请求的技巧 550

23.7本章小结 551

参考书目 552

返回顶部