让Oracle跑得更快:Oracle10g性能分析与优化思路

引起数据库性能问题的因素

软件设计对数据库的影响

软件架构设计对数据库性能的影响

软件代码的编写对数据库性能的影响

数据库的设计

OLTP:在线事务处理系统,用户并发数多。例如售票系统。

OLAP:在线分析系统。例如报表系统。

DSS:决策支持系统

数据库的硬件设计

存储容量:这里介绍了如何估算表所占空间的大小。

存储的物理设计:SAN存储结构

数据的安全:Data Guard结构、RAC结构、Rman+归档。

锁和阻塞

外键的创建,会影响性能。当你需要修改或者删除主表数据时,总是会锁定扫描从表,保证数据的完整性。

Latch和等待

Latch,类似于锁一样的资源,是为了保护内存结构而发明的一种资源。它是一种轻量级的锁,不会造成阻塞,只会导致等待。

阻塞,是一种系统设计上的问题,等待,是一种系统资源争用的问题。

共享池中的Latch争用

数据缓存池Latch争用

访问频率非常高的数据块被称为热快。

优化器

RBO:基于规则的优化器,从oracle10g开始,被弃用。

CBO:基于代价的优化器,有两种模式可以选择,FIRST_ROWS(n)优先考虑将结果集中的前n条记录以最快的速度反馈回来;ALL_ROWS,全表扫描。

执行计划

Cardinality(基数)/Rows:

SQL的执行计划

Hint

分析及动态采样

直方图:数据在列上的分布情况

DBMS_STATS包:性能输的收集、设置、删除、备份和恢复。

动态采样:

并行执行

变量绑定

SQL执行顺序:先判断是否有相同hash值存在的sql,如果没有,那么进行语法分析、语义分析、生成执行计划、执行sql。

SQL_TRACE和10046事件

10053事件

性能视图和性能参数

性能报告

----摘自《让Oracle跑得更快:Oracle10g性能分析与优化思路》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 引起数据库性能问题的因素 1 1.1 软件设计对数据库的影响 1 1.1.1 软件架构设计对数据库性能的影响 1 1.1.2 软件代码的编写对数据库性能的影响 2 1.2 数据库的设计 8 1.2.1 oltp数据库 9 1.2.2 olap数据库 10 1.3 数据库的硬件设计 14 1.3.1 存储容量 15 1.3.2 存储的物理设计 16 1.3.3 数据的安全 17 1.4 小结 19 第2章 锁和阻塞 20 2.1 关于锁 20 2.2 锁和阻塞 22 2.3 引起阻塞的其他情况 30 2.3.1 select for update 30 2.3.2 外键和索引 36 第3章 latch和等待 44 3.1 共享池中的latch争用 45 .3.2 数据缓冲池latch争用 54 3.2.1 表数据块 54 3.2.2 索引数据块 59 3.2.3 索引根数据块 62 3.2.4 段头数据块 65 第4章 优化器 66 4.1 rbo基于规则的优化器 66 4.2 cbo基于成本的优化器 69 第5章 执行计划 85 5.1 cardinality (基数) 85 5.2 sql的执行计划 94 第6章 hint 109 6.1 和优化器相关的hint 115 6.1.1 all_rows和first_rows(cbo) 115 6.1.2 rule hint 117 6.2 访问路径相关的hint 117 6.2.1 full hint 118 6.2.2 index hint 118 6.2.3 no_index hint 118 6.2.4 index_desc hint 119 6.2.5 index_combine hint 119 6.2.6 index_ffs 119 6.2.7 index_join 120 6.2.8 index_ss hint 120 6.3 表关联顺序的hint 125 6.3.1 leading hint 125 6.3.2 ordered hint 126 6.4 表关联操作的hint 127 6.4.1 use_hash,use_nl和use_merge hint 127 6.4.2 no_use_hash hint 132 6.4.3 no_use_merge hint 133 6.4.4 no_use_nl hint 133 6.5 并行执行相关的hint 134 6.5.1 parallel hint 134 6.5.2 no_parallel hint 134 6.6 其他方面的一些hint 135 6.6.1 append hint 135 6.6.2 dynamic_sampling hint 135 6.6.3 driving_site hint 136 6.6.4 cache hint 136 6.7 小结 136 第7章 分析及动态采样 138 7.1 直方图 141 7.2 dbms_stats包 147 7.3 动态采样 176 7.3.1 什么是动态采样 176 7.3.2 动态采样的级别 182 7.3.3 什么时候使用动态采样? 185 7.4 小结 185 第8章 并行执行 186 8.1 并行和olap系统 187 8.2 并行处理的机制 189 8.3 读懂一个并行处理的执行计划 191 8.4 一个很常见的并行执行等待事件 192 8.5 并行执行的适用范围 194 8.5.1 并行查询 194 8.5.2 并行ddl操作 195 8.5.3 并行dml操作 203 8.6 并行执行的设定 210 8.6.1 并行相关的初始化参数 210 8.6.2 并行度的设定 211 8.7 直接加载 213 8.7.1 直接加载和redo 216 8.7.2 直接加载和索引 219 8.7.3 直接加载和并行 221 8.7.4 直接加载和sql*loader 226 第9章 变量绑定 232 9.1 什么是变量绑定,为什么要做变量绑定 232 9.2 为什么说oltp必须要求变量绑定而olap不应该绑定变量 241 9.3 bind peaking 248 第10章 sql_trace和10046事件 254 10.1 sql_trace 254 10.2 tkprof工具 256 10.3 10046事件 268 第11章 10053事件 276 第12章 性能视图和性能参数 294 12.1 性能视图 294 12.1.1 v$sql 295 12.1.2 v$sql_shared_cursor 300 12.1.3 v$session 305 12.1.4 v$sessstat 309 12.1.5 v$session_wait 310 12.2 性能参数 312 12.2.1 cursor_sharing 313 12.2.2 db_file_multiblock_read_count 328 12.2.3 pga_aggregate_target和sga_target 334 12.2.4 optimizer_dynamic_sampling 334 第13章 性能报告 335 13.1 awr性能报告 335 13.1.1 生成awr性能报告 337 13.1.2 awr性能报告分析 342 13.2 statspack性能报告 386 13.2.1 statspack的安装 386 13.2.2 statspack性能采集 391 13.3 ash性能报告 394 13.3.1 生成ash性能报告 395 13.3.2 ash性能报告分析 405 13.4 小结 416 附录a 常见的等待事件 417 后记 关于数据库的学习方法 434

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值