没有合适的资源?快使用搜索试试~ 我知道了~
优化
资源推荐
资源详情
资源评论
业务是否用最优的方式来运行。
如果不是最优的方式那就对 进行优化。
查看数据库的执行计划
技术方向上,应多考虑性能方面的问题
积极参与到业务层面,从业务角度思考问题。
导致性能问题的可能原因
,表没有正确的创建索引---错误的执行计划
,表没有及时的分析---错误的执行计划
,热块---数据块的争用(反向索引?)
,锁的阻塞---业务设计缺陷、
, 解析消耗大量 ---变量绑定
,低效的 --- 自身的问题
,数据库整体负载过程---架构设计的问题
性能问题的定位
原则 尽可能从小范围分析问题
, 层
如果能从定位到 ,就不要从会话层面分析
已经定位到了某条 语句有问题,就针对该语句着手。使用工具 和 执行计划来分析该语句,
如使用:,(查看某条语句资源消耗情况)
,会话层
如果能定位到会话,就不要从系统层面分析:
,系统层
如果无法定位任何性能问题,从系统层面入手
(), (!" #)
锁
没有并发就没有锁
$#%& 中锁的分类:
'()&)& **队列类型的锁,通常和业务相关的 简写+&'(
#%,& ***系统资源方面的锁,比如内存结构, 解析
锁的原则:
,只有被修改时,行才会被锁定, &&% 操作不会在数据表中加锁。
,当一条语句修改了一条记录,只有这条记录上被锁定,在 $#%& 数据库中不存在锁升级。
,当某行被修改时,它将阻塞别人对它的修改。
,当一个事务修改一行时,将在这个行上加上行锁(-),用于阻止其它事务对相同行的修改。
,读永远不会阻止写。
,读不会阻塞写,但有唯一的一个例外,就是 &&%.../$)!0#&.
,写永远不会阻塞读
1,当一行被修改后,$#%& 通过回滚段提供给数据的一致性读。
查看 $#%& 的锁的类型:
&&%2!&'#3&/$34%52!&6
7 锁和 - 锁:
7 表锁:发生在 "' &$)!0#&0&&& 以及 &&%/$)!0#& 操作时,目的是保证操作能够正常进行,并
且阻止其它人对表执行 88 操作。
- 锁 事务锁(行锁)对于正在修改的数据,阻止其它会话进行修改。
表锁的演示:
当未提交一个事务,另外一个相同的事务操作就会被阻塞。查看表的阻塞的详细情况:使用视图:4%5
&&% "02!&"0"030&$&()& 9%5/$34%5:,&$&2!&"';<7<<-<=$0&$926
注 :7 锁所对应的 字段名:"0返回的就是数据表的 8 号,通过这个返回值可以查出被阻塞的表名,
使用数据字典:09#9>&% +
&&%9>&%'#3&/$309#9>&% :,&$&9>&%"0?@8A
注 :- 锁所对应的 字段名:"0与 "0之后就是对应着的回滚段的地址。
注 :$&()& 字段表示是否请求一个锁,值为 表示没有请求,非 说明有请求。
注 :B 字段表示当前是不是有阻塞。值为 没有阻塞,非 表有阻塞。
查看当前会话的 8:
&&%0" C'% "0/$3432 #6
会话等待视图:4 & "':#"
&&% "0&4&'/$34 & "':#":,&$& "0"'; "0 "0=6
"' &$ 的阻塞与 )!0#& 的阻塞是不一样的。
7 锁的几种模式---%530&
:,#$&;=***
:D%) "4	&%5;-=***
,#$	&%5***
,#$&:D%) "4	&%5;-=***
D%) "4&%5;-=***
锁---基于引用关系的锁定
当于具有主外键关系的表做 87 操作时,锁定不单单发生在操作表上,相应的引用表上也可能加上相应
的锁定。
创建一个主表:
%$&#	&!;"0"'!$"3#$25&2=6
创建一个辅表:
%$&#	&%;"0$&/&$&'%& !;"0==6
在对主表进行 "' &$ 操作的时候,从表也会被加表级锁。
在对主表进行 )!0#&,0&&& 操作时,不会对从表加表级锁定。
在对从表进行 87 操作时,会对主表也会加表级锁。
要在外键上创建一个索引,以提高数据处理效率。
死锁
两个会话互相持有对方资源,遇到死锁时,$#%& 会自行对其进行处理。
#%, 的目的:
,保证资源的串行访问:
保护 E 的资源方向
保护内存的分配
,保证执行的串行化:
保护关键资源的串行执行
防止内存结构损坏
#%, 不是队列性的。是数据库的资源层。
%5 是发生的数据库的业务层。
#%, 在 E 中。
资源的请求和分配:
共享池
( 解析, ( 重用
数据缓冲池
数据访问,数据写入磁盘,数据读入内存
修改数据块
数据段扩展
查看数据库中的 #%,使用的视图:4#%,'#3&
#%, 持有的时间非常短
#%, 的获取:
,:#"方式--如期无法获取请求的 #%,,则:
!"'+当一个会话无法获得需要的 #%, 时,会继续使用 ( 空转),达到一个间隔后,再次尝
试申请 #%,,直到达到最大的重试次数。
&&!+当一个会话无法获得需要的 #%, 时,会等一段时间( &&!)达到一个间隔后,再次尝试申请
#%,,如此反复,直到达到最大的重试次数。
,:#" 方式--如果沅法获取请求的 #%,则:
不会发生 &&! 或者 !"'
转而去获取其它可用的 #%,
,#$&0! 里的 #%, 争用--绑定变量
用于标识 $#%& 文件标识:
#&$ & "' &$#%&F&"0&'CF&$?9"'06
对执行的 语句做 $#%& 记录
#&$ & "' & ($#%&?$)&6
B)G&$%#%,& 的机制
视图:49,
用于查看文件头。
-HHH
#%, 相关视图***H
这个视图实际上是 $#%& 对每个 #%, 的统计信息的一个汇总,每一条记录表示一种 #%,.
&&%'#3&I& 3" & &&! "33&0"#&I& "33&0"#&3" & /$34#%,:,&$&'#3&"5&J%#%,&KJ6
注:7+#%, 名称
E:以 ""'I:#" 请求模式 #%, 的请求成功数
7+初次尝试请求不成功次数
:成功获取前 &&!"'I 次数
778E+以 33&0"#& 模式 #%, 请求数
7787+以 778 模式请求失败数
HH8
该视图用于显示当前的 #%,,0&$
8标明当前的哪个进程占用着 #%,
8标明当前哪个会话使用着 #%,
88标明 #%, 地址
7用于指定被占用的 H 名
E标明当前的 H 被获取的次数
该视图包含了当前 #%, 持有有的信息
通过视图中的 8 和 8 信息,关联视图 ,可以定位相应持有资源的会话信息。
HH8
存储子 #%, 信息的视图,在 E 中胡些资源使用多个 #%, 保护,比如 "9$#$2%#%,&这些多个 #%, 保护同
一个资源,成为子 #%,
HH8 和 H 一样。
H 优化的思路:
H 导致的性能问题,通常是一个系统层面的问题,所以:
, 报告是一个比较好的入口
,通过动态视图 H,可以分析当前系统的 H 资源情况
,确定争用最大的 H
,分析可能的原因
,从应用层面和数据库层面考虑解决途径。
主要是使用绑定变量,减少热块,在数据库设计时决定这一切。
执行计划和优化器
执行计划
语句访问和处理数据的方式
数据的访问:
,直接访问
并行访问
多数据块
,通过索引访问
"'0&D)'"()& %#'
"'0&D$#'I& %#'
"'0&D/) %#'
"'0&D/# /) %#'
"'0&D 5"! %#'
数据处理:
$0&$92I$)!92%)'#4I )3
数据的关联处理
'& &0!>"'7&$I&>"',# ,>"'
如何产生执行计划:
&#)$#%&$#%&&D!6
&"'& "L&6
@D!$& "'A
$#%& 的优化器
B** 9# &0!C3"L&$
依据一套数据模型,计算数据访问和处理的成本,择最优成本为执行方案。
不同的版本产生的执行计划就不同。
B 的工作依照:操作系统,磁盘 系统,数据库实例的优化集,数据表等信息进行计算并生成执行计
划。
B 的工作模式:
#$: ****以结果集的全部处理完毕为目的 适用于
&&%"0%)';M=/$3I$)!92"0$0&$92"06
F$ $: ;'=****以最快返回 ' 行为目的
&&%9>&%'#3&
/$3
;
剩余33页未读,继续阅读
资源评论
zdh_139
- 粉丝: 16
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功