ocp.0.data-lab
gre单词量最多。 新东方,俞敏洪,红宝书,mp3 8小时。、
张道真 实用英语
优化i/o
学的“快。”!
i/o体现结构
oracle 10g的三个存储选项:
fs
raw分区包含了raw卷
asm
fs:
write -through-cache(os的缓存)
hp
ha
security
raw 分区
io
标准io :os的
同步io:
异步io:可以使oracle跑的更快。aio
io的性能取决于带宽bandwidth
--磁盘的数量
--控制器数量
所用的技术:stripe and mirror everything --same
raid 0: stripe -提高性能
raid 1: mirror --更安全
radi 5: 结合0+1 写入慢。
oracle 实用raid 0+1
数据库的io调优
rac :一个rac一个应用,
grid : 一个rac 多个应用。
asm striping
au:allocation unit
asm代替的是volume,不是代替raid。
rda只能搜集到os级别的,搜集不到网络和存储。
优化pga 和临时空间:用来优化sql查询
sql内存使用
内存密集的sql操作
sort-based :sort 、group by 、 rollup、 window,
hash-join
bitmap operators (merge and inversion)
工作区概念:
PGA存放sql操作需要的内存,游标的数据存放在pga中, sql的句柄是放在sga中的。
每一个server process 都对应一个pga.
sql多 还是sql需要的数据量多。
oltp 和dw
redo undo 临时表空间 放在高速的设备上。
临时表空间组:10g开始才有。
优化块空间的使用
extent :
字典管理--
本地管理--
row chain 行链接:一半一半。
row migration 行迁移:多次寻址(rowid不能变,在a处,而记录在b处)行
若是rowid变了,就可以进行shrink(shrink之前,先要row movement打开)
db_block_size 不是越大越好,因为大了,latch争用会大
free lists :类似fat文件系统的中的fat表
pctfree:留给更新用的数据空间。
pctused:是块中空闲空间的最低限度,
assm:自动段空间管理。
bigfile 表空间中,数据文件的管理使用omf
性能调优:总结.
oltp:
sga =(所有物理内存*80%)*80%
pga =(所有物理内存*80%)*20%
dss:
sga =(所有物理内存*80%)*50%
pga =(所有物理内存*80%)*50%
调优是调性能和调可用性。
redo最多20分钟切换一次。
常见等待事件。
前10个错误
1.不良的连接管理:由中间件来解决,是架构问题
2.游标和共享池的不良使用。是sql问题
3.不良的sql。sql问题
4.使用非标准的初始化参数
5.得到数据库的io错误。
6.redo机制问题。
7.serialization for data blocks in the data cache
8
9
10
上午培训结束。
下午开始.
oracle数据库体系结构。
sga在共享内存中
ipc 完成进程和进程之间的通讯。
asmm
access path
pga 是一个内存区域,
网站上的应用:mysql比oracle 快。
http:的特征是短连接,requeset reply, 然后close
连接池 先连接好 实例,预留句柄 等待客户端请求。
调优的方法
调优的核心是找瓶颈。
dba作为被告,小机,存储,程序员作为原告, 原告请举证。
tuning目标:减少响应时间,减少资源使用。
找原因
方法:addm,statspack,
手工tuning
1.收集参考目标信息
hint
sql正文
结构表和索引
优化统计
视图
优化计划:当前的预先的。
2.收集最优化统计表
3 回顾执行计划
一看二抄三改,
4 调整sql语句
char 和varchar是不同的数据类型
char varchar2
连接方法,先连小表,后连大表。
5.调整index 和创建物化视图
移除不必要的索引
index the performance_critical access paths
在现有的索引中重新排列columns
新增columns 到索引中,
基于使用类型创建适当的索引:
B*tree
bitmap
bitmap join
concatenated
考虑使用索引组织表
6 维护执行计划(就是改变其access path)
stored outines
自动sql tuning:
sql tuning :关联 排序
sql access :是否加索引和物化视图
建立索引的权限:resource.
索引存储的是rowid,走索引是检索rowid,
设计和开发系能
scalablity 可伸缩性。
hard coding 就是缺少可伸缩性。
预先调优方法
简单的设计
数据建模
表和索引
使用视图
写有效的sql
游标共享
使用绑定变量
sql 与 pl.sql对应
动态sql
简单的应用设计
简单的表
好的sql
indexing only as required
表设计
principally normalize
selectively de normalize
normalize 就是拆表,越拆越细
---- ------ ---------
共享游标 :sp
数据不是能共享的,只有代码才能共享。
cursor_sharing
exact
similar
优化简介
为sql创建执行计划
评估表达式
使用表表和系统统计表
决定如何访问数据
决定如何加入表
决定哪些路径是最有效的。
比较执行不同计划的成本(costs,costs来自经验 costs based )
确定成本最低的计划
cardinality 有可能的结果集
dba_tables 中的某表的记录数《》实际此表的记录数,
统计来的,dbms_stats包
为什么要统计,因为costs值来自于统计信息。
oracle的优化需要统计表,以确定最佳的执行计划。
优化 sql语句
sqlplus中,打开set timing on
访问路径:
full table scan
row id scan
index scan
cluster scan(簇表)
hash scan
join 顺序
nested-lop join
hash join
sort-merge join
cartesian jion :笛卡尔积
排序,关联,访问路径 是最耗时间的。
优化操作
访问路径:(使用哪种路径,要讲出道理出来)
full table scan
少索引
查询出大量的数据(4%)
小表
row id scan
若是使用了row id ,禁止使用shrink
index scan
full scan
fast full scan
bitmap scan
cluster scan(簇表)
hash scan
join:
out join (+)
优化:
连接顺序:谁在先谁在后
连接方法:
nested loop join
小表适合
use_nl (table1,table2)
hash join
先分组,再在组内进行nested loop join
大表适用。
sort-merge join
来自每一个 rs 中的行都会在join属性栏中被分类
star-join
用于数据仓库 dimension tables
关联子查询:主查询和内查询的关联。
sort操作
引起sort的操作:
unique/distinct
aggregate
group by
union (union all不排序)
order by
sort在pga完成,temp
执行计划
看执行计划的方法:
explain plan --->存放于表中,使用包dbms_xplan来查看。
sql trace
set autotrace on (执行结果和执行计划都显示出来) --当前的session
结果集
执行计划
statistics
statspack
awr
v$sql_plan
包是pl/sql
rda
awr
set autotrace on
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/161195/viewspace-619622/ ,如需转载,请注明出处,否则将追究法律责任。