当前位置:首页 > 工业技术
Oracle高性能SQL调整
Oracle高性能SQL调整

Oracle高性能SQL调整PDF电子书下载

工业技术

  • 电子书积分:13 积分如何计算积分?
  • 作 者:(美)Donald K.Burleson著;刘砚,黄春等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2002
  • ISBN:7111097556
  • 页数:397 页
图书介绍:
《Oracle高性能SQL调整》目录
标签:高性能 调整

第一部分 背景知识 1

第1章 SQL简介 1

1.1 SQL的基本特征 1

1.2 SQL起源 3

1.2.1 SQL模型 4

1.2.2 select操作 4

1.2.3 project操作 4

1.2.4 join操作 5

1.3 SQL优化器 5

1.4 SQL调整的目标 5

1.5 作为Oracle调整步骤之一的SQL调整 6

1.6 SQL调整的障碍 8

1.7 SQL调整过程 9

1.7.1 定位使用频繁的SQL语句 10

1.7.2 调整SQL语句 11

1.7.3 调整持久化 11

1.8 SQL调整的目标 12

1.9 SQL调整工具箱 13

1.10 结论 18

第2章 Oracle SQL扩展简介 19

2.1 Oracle内部视图 19

2.2 Oracle内置函数 23

2.3 Oracle SQL和面向对象扩展 26

2.4 挑战关系原则——重复数据项列表 29

2.4.1 varray表 30

2.4.2 表嵌套 33

2.4.3 SQL对象扩展的性能 34

2.5 结论 34

第3章 理解SQL执行 36

3.1 解析SQL语句 36

3.1.1 重新书写查询 37

3.1.2 在Oracle8i和Oracle9i中使用cursor_sharing 38

3.2 生成执行计划 40

3.1.3 减少SQL解析的技术 40

3.2.1 表访问方式 41

3.2.2 索引访问方式 43

3.2.3 连接操作 45

3.3 对SQL结果集进行排序 49

3.4 结论 50

第4章 SQL优化器简介 51

4.1 基本的优化器技术 51

4.1.1 基于规则的优化器 52

4.1.2 基于成本的优化器 54

4.2.1 rule模式 56

4.2.2 choose模式 56

4.2 优化器模式 56

4.2.3 first_rows模式 57

4.2.4 all_rows模式 57

4.2.5 更快的执行速度与最小的资源消耗 57

4.3 基于规则优化的调整 58

4.3.1 更改基于规则的驱动表 59

4.3.2 如果基于规则的优化器没有使用正确的索引 59

4.4 基于成本优化的调整 60

4.4.1 调用基于成本的优化器 61

4.4.2 为CBO收集统计资料 62

4.5 决定默认优化器模式 63

4.6 迁移到基于成本的优化器 64

4.6.1 对开发人员进行重新培训 64

4.6.2 选择基于成本的优化器的思想 65

4.7 结论 67

第5章 SQL内部处理 68

5.1 共享SQL区域和专用SQL区域 68

5.2 SQL的SGA统计资料 69

5.3 程序库缓存的内部情况 70

5.3.1 程序库缓存中可以多次使用的SQL 70

5.3.2 监控程序库缓存不足率 71

5.3.3 使用STATSPACK监控程序库缓存中的对象 72

5.3.4 程序库缓存的STATSPACK报告 73

5.4 调整Oracle SQL排序 74

5.5 确定程序库缓存中具有高影响力的SQL语句 79

5.6 关于程序库缓存中SQL的报告 83

5.6.1 使用带有STATSPACK的access.sql脚本 84

5.6.2 access.sql报告 84

5.6.3 全表扫描报告 85

5.6.4 索引范围扫描报告 86

5.6.5 索引惟一性扫描报告 86

5.6.6 完全索引扫描报告 87

5.6.7 access.sql报告的局限性 87

5.7 结论 88

6.1 SQL调整和全表扫描 89

第6章 调整SQL表访问 89

6.1.1 决定全表扫描的阈值 90

6.1.2 查找全表扫描 90

6.1.3 优化器如何选择全表扫描 91

6.1.4 当CBO选择了错误的全表扫描 92

6.1.5 预防不必要的全表扫描 93

6.2 借助于索引的表访问 97

6.3 更改表访问方式 98

6.3.1 将索引由惟一索引更改为非惟一索引 99

6.3.2 重新书写SQL语句以更改表访问方法 100

6.4 重新排序表记录以减少输入输出 102

6.4.1 使用索引簇重新排序记录 104

6.4.2 使用CTAS重新排序记录 106

6.5 Oracle存储参数和表访问性能 108

6.5.1 pctfree存储参数 108

6.5.2 pctused存储参数 109

6.5.3 freelists存储参数 109

6.5.4 OPS的freelist groups存储参数 110

6.5.5 存储参数规则总结 110

6.6 空闲列表管理和表访问性能 111

6.6.1 空闲列表的链接和取消链接 112

6.7 结论 114

6.6.2 减少空闲列表的重新链接 114

第二部分 SQL调整基础 115

第7章 Oracle SQL调整的过程 115

7.1 SQL调整的目标 115

7.2 SQL调整步骤 116

7.3 第一步:确定具有高影响力的SQL语句 117

7.3.1 SQL语句分级 117

7.3.2 确定使用频繁的SQL语句 118

7.3.3 使用STATSPACK指定具有高影响力的SQL 119

7.3.4 来自程序库缓存的SQL报告 122

7.3.5 使用第三方工具定位有问题的SQL 126

7.4 第二步:抽取和解释SQL语句 128

7.5 第三步:调整SQL语句 129

7.6 SQL调整实例 130

7.7 使用第三方工具快速进行SQL调整 132

7.8 结论 134

第8章 理解Oracle SQL工具 135

8.1 解释SQL语句 135

8.2 运行快速SQL跟踪 140

8.3 TKPROF工具 141

8.3.1 为SQL跟踪设置环境 141

8.3.2 生成SQL跟踪文件 142

8.3.3 格式化跟踪文件 144

8.3.4 TKPROF报告 145

8.4 Oracle专家中心SQL分析报告 147

8.5 有关程序库缓存中所有SQL的报告 149

8.5.1 使用带有STATSPACK的access.sql脚本 150

8.5.2 access.sql报告 151

8.6 结论 153

第9章 定位重要的SQL语句 154

9.1 建立实例范围的SQL基线 154

9.1.1 设置默认的Optimizer_Mode 154

9.1.2 默认优化器模式持久化 155

9.1.3 提高全表扫描速度的实例范围参数 156

9.1.4 其他影响SQL执行的初始化参数 156

9.2 什么是重要的SQL语句 157

9.1.5 运行SQL基线测试 157

9.3.1 指定高频使用的SQL语句 158

9.3 抽取需要调整的重要SQL语句的技术 158

9.3.2 抽取SQL语句的脚本 159

9.4 SQL语句分级 160

9.4.1 查找不包含提示的新SQL语句 160

9.4.2 当使用优化器计划稳定性时查找新SQL语句 163

9.5 结论 163

第10章 调整全表扫描和并行查询 164

10.1 评估全表扫描的合法性 164

10.2 查找要进行Oracle并行查询的表 165

10.3.1 调用Oracle并行查询 166

10.3 Oracle并行查询简介 166

10.3.2 Oracle并行查询初始化参数 167

10.3.3 设置最优化的并行度 168

10.3.4 使用并行查询提示 172

10.3.5 并行查询和表连接 173

10.4 监控Oracle并行查询的使用 179

10.4.1 监控并行执行活动 179

10.4.2 使用STATSPACK监控Oracle并行查询 180

10.4.3 使用V$视图监控Oracle并行查询 181

10.4.4 并行查询和分布表 182

10.5 结论 183

第11章 优化Oracle SQL语句排序 185

11.1 有关Oracle排序的初始化参数 185

11.1.1 sort_area_size参数 186

11.1.2 sort_area_retained_size参数 186

11.1.3 sort_multiblock_read_count参数 187

11.1.4 已废弃的Oracle8排序参数 187

11.1.5 优化器模式和排序活动 187

11.2 通过添加索引避免排序 187

11.3 不必要的排序 188

11.4 监控排序活动 188

11.5 结论 191

第12章 使用Oracle提示进行调整 192

12.1 提示简介和历史 192

12.2 在SQL查询中指定提示 192

12.3 优化器提示 193

12.3.1 all_rows提示 194

12.3.2 rule提示 194

12.3.3 first_rows提示 194

12.4 表连接提示 194

12.4.1 use_hash提示 194

12.4.2 use_merge提示 196

12.4.3 use_nl提示 196

12.4.4 star提示 197

12.5.1 merge_aj提示 198

12.5 表反连接提示 198

12.5.2 hash_aj提示 200

12.6 Index提示 201

12.6.1 Index提示简介 201

12.6.2 index_join提示 202

12.6.3 and_equal提示 202

12.6.6 index_desc提示 204

12.6.7 index_combine提示 204

12.6.5 no_index提示 204

12.6.4 index_asc提示 204

12.6.8 index_ffs提示 206

12.6.9 use_concat提示 207

12.7 Parallel提示 209

12.7.1 parallel提示简介 209

12.7.2 pq_distribute提示 210

12.7.3 noparallel提示 211

12.8 表访问提示 211

12.8.1 full提示 211

12.8.2 簇表提示 211

12.8.4 nocache提示 212

12.8.5 ordered提示 212

12.8.3 no_expand提示 212

12.8.6 ordered_predicates提示 213

12.8.7 push_subq提示 213

12.9 子查询中的提示 213

12.10 结论 216

第13章 使用优化器计划稳定性进行调整 217

13.1 存储框架简介 217

13.1.1 优化器计划稳定性背后的思想 218

13.1.2 在向CBO迁移时使用优化器计划稳定性 219

13.2 使用存储框架要做的准备 219

13.2.3 创建框架包 220

13.2.2 检查重要的初始化参数 220

13.2.1 设置use_stored_outlines命令 220

13.2.4 创建存储框架表空间 221

13.3 如何创建和修改存储框架 222

13.3.1 确定最快的执行计划 222

13.3.2 为最初的查询创建存储框架 224

13.3.3 为带有提示的查询创建存储框架 225

13.3.4 交换存储框架 227

13.4 管理存储框架 228

13.4.1 为存储框架使用字典视图和表 228

13.4.2 使用框架包 230

13.4.3 管理存储框架的分类 231

13.5 结论 234

第14章 基于成本优化器的调整 235

14.1 统计资料和基于成本的优化 235

14.1.1 动态和静态CBO执行计划思想 235

14.1.2 收集统计资料的频率 236

14.1.3 为CBO收集统计资料 238

14.2 基于成本优化和SQL调整 239

14.2.1 基于成本的表连接 240

14.2.2 调整带有子查询的基于成本的SQL语句 241

14.2.3 调整复杂的布尔查询 242

14.3.1 影响表连接的初始化参数 248

14.3 影响基于成本优化器行为的初始化参数 248

14.3.2 影响CBO索引行为的初始化参数 253

14.4 结论 253

第15章 基于规则优化器的调整 255

15.1 调用基于规则的优化 255

15.2 使用choose作为默认优化模式时存在的问题 256

15.3 使用基于规则的默认优化器模式 256

15.3.1 驱动表位置问题 257

15.3.2 驱动表和表基数 258

15.3.3 有关调整基于规则查询的提示 259

15.4 基于规则的优化器无效的情况 260

15.5 基于规则的优化器是最佳选择的情况 260

15.6 结论 262

第16章 调整表连接 264

16.1 表连接类型 264

16.1.1 等连接 265

16.1.2 外部连接 265

16.1.3 自连接 267

16.1.4 反连接 269

16.1.5 半连接 271

16.2 Oracle表连接方法 274

16.2.1 嵌套循环连接 274

16.2.2 use_nl提示 276

16.2.3 散列连接 276

16.2.4 排序合并连接 280

16.2.5 星型连接 283

16.3 评估表连接顺序 287

16.4 调整分布式SQL表连接 288

16.4.1 总是为分布式连接使用CBO 289

16.4.2 察看分布式连接的执行计划 289

16.4.3 分布式连接调整方针 291

16.5 结论 292

第三部分 SQL高级调整 293

第17章 调整SQL的DML语句 293

17.1 Oracle存储参数和DML性能 293

17.1.2 pctused存储参数 294

17.1.1 pctfree存储参数 294

17.1.3 freelists参数和DML性能 295

17.1.4 OPS的freelist组存储参数 295

17.1.5 存储参数规则的小结 295

17.2 空闲列表管理和DML性能 296

17.2.1 链接到空闲列表和从空闲列表断开链接 297

17.2.2 减少空闲列表重新链接操作 299

17.3 长数据列和DML行为 299

17.4 根据平均记录长度来设置pctfree和pctused参数 301

17.5 缓冲区忙等待以及DML冲突 302

17.5.1 利用STATSPACK发现DML等待冲突 303

17.5.2 用STATSPACK确定缓冲区忙等待 305

17.6 SQL update语句、子查询和并行DML 312

17.7 DML执行时约束的开销 314

17.8 用DML维持索引所需的开销 315

17.9 使用PL/SQL批量插入来提高SQL插入数据的速度 316

17.10 结论 317

第18章 用临时表调整SQL 319

18.1 与字典视图一起使用CTAS 319

18.2 结论 328

第19章 SQL子查询的调整 329

19.1 Oracle子查询的基本知识 329

19.2 关联与非关联子查询 331

19.2.2 子查询的执行时间 332

19.2.1 数据量规模和子查询的问题 332

19.2.3 子查询执行的基本特征 335

19.3 子查询的自动SQL转换 335

19.4 调整具有IN和EXISTS子句的子查询 335

19.4.1 使用IN子句的非关联子查询 335

19.4.2 带有IN子句的关联子查询 340

19.4.3 带有EXISTS子句的非关联子查询 340

14.4.4 使用EXISTS子句的关联子查询 340

19.5 调整带有NOT IN和NOT EXISTS子句的子查询 342

19.5.1 使用NOT IN运算符的非关联子查询 342

19.5.2 带有NOT IN运算符的关联子查询 344

19.5.3 带有NOT EXISTS运算符的关联子查询 345

19.5.4 使用NOT EXISTS运算符的非关联子查询 346

19.6 调整带有不相等条件的子查询 347

19.6.1 在子查询中使用ALL和ANY子句 347

19.6.2 在子查询中使用不相等条件 349

19.7 用提示来提高子查询的执行速度 351

19.8 结论 352

第20章 用索引调整SQL 353

20.1 把握进行索引的时机 353

20.1.1 提取SQL语句 354

20.1.3 衡量全表扫描的合法性 355

20.1.2 添加索引 355

20.1.4 衡量带有新索引的查询的执行时间 358

20.1.5 预测整个数据库的受益情况 358

20.2 通过添加索引来消除排序 358

20.3 不必要的排序 358

20.4 索引谓词 359

20.5 B树索引中可供选择的索引 363

20.5.1 位图索引 363

20.5.2 基于函数的索引 363

20.5.3 反主键索引与SQL性能 363

20.6 带有IN条件的查询的索引用法 364

20.7 结论 365

第21章 数据仓库的SQL调整 366

21.1 大型数据表连接调整 366

21.1.1 ordered提示 367

21.1.2 order_predicates提示 367

21.2 Oracle分区与Oracle SQL调整 368

21.2.1 分区和SQL数据表连接 368

21.2.2 分区与SQL执行速度 368

21.3 Oracle的并行查询和Oracle SQL调整 369

21.3.1 并行查询的int.ora参数 369

21.3.2 设置最优的并行度 370

21.3.3 使用并行查询提示 371

21.4 数据仓库查询的Oracle优化 373

21.4.1 optimizer_search_limit参数 374

21.4.2 optimizer_max_permutations参数 374

21.5 结论 376

第22章 用STATSPACK进行SQL调整 377

22.1 STATSPACK和SQL数据收集 378

22.2 用STATSPACK对Oracle SQL排序进行调整 378

22.3 用STATSPACK跟踪SQL 384

22.3.1 SQL快照阈值 384

22.3.2 STATSPACK SQL前10位报表 385

22.4 结论 387

第23章 调整使用内置函数和特殊运算符的SQL语句 388

23.1 在SQL中使用like和case子句 388

23.1.1 在Oracle查询中使用like子句 388

23.1.2 用case语句合并多重扫描 390

23.2 调整带有BIF的SQL语句 391

23.2.1 BIF与字符数据类型一起使用 392

23.2.2 BIF与日期数据类型一起使用 392

23.2.3 使用substr BIF 395

23.2.4 Oracle9i中对BIF的改进 396

23.3 结论 397

23.4 本书的总结 397

相关图书
作者其它书籍
返回顶部