[转帖]事务和OWI_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3636 | 回复: 0   主题: [转帖]事务和OWI        下一篇 
derek
注册用户
等级:中校
经验:1550
发帖:209
精华:0
注册:2011-7-21
状态:离线
发送短消息息给derek 加好友    发送短消息息给derek 发消息
发表于: IP:您无权察看 2011-8-3 17:01:48 | [全部帖] [楼主帖] 楼主

 事务和OWI

--------------------------------------------------

摘自 高级owi与 oracle性能调整

 事务的概要

 

   完整地理解事务,就等于完整的了解了oracle,所以要理解事务,需要理解oracle所提供的控制功能,内部算法

 而且,在像 rac这样的多节点环境下,��个节点需要同步,所以其复杂程度超出想象。本章只对理解等待事件引起的

 性能问题需要的事务机制进行说明,详细的信息请翻阅参考文献。

   

   用户执行DML(即执行事务)操作在oracle内部如下顺序进行

   (1) 相应事务分配回滚段(undo segment),这时优先使用当前联机状态回滚段中一个,回滚段的选择是随机的,若

 另外的事务正在使用重试3次,在此过程中失败,则将未联机的回滚段联机后使用。如果此过程也失败,就会创建新的

 回滚段,通过这个过程也没有分配到回滚段,则使用oracle8i中使用的回滚段算法(rollback segment),即,使用另外

 事务使用中用量最少的回滚段,如果 服务器进程在获得回滚段时没有适当的联机状态的回滚段,则等待enq:US-contention

 事件,直到有适当的联机状态的回滚段为止。

   

   (2) 分配回滚段后,在回滚段头上创建事务表 slot(transaction table slot)。

   

   (3)  创建事务表后会生成TXID (Transacion ID),再将此TXID分配给当前事务,TXID通过V$TRANSACION视图的XIDUSN,XIDSLOT

   XIDSQN表现,这个值指向分给事务的回滚段头上存在的事务表的准确位置,事务必须在分配撤销区域后得到TXID。

   

   (4) 事务对象的数据块载入到高速缓冲区,在块头的ITL(interested transacion list)上登记事务条目(transaction entry).如果

   ITL上没有登记条目所需的空间,直到有空间为止,一直等待ENQ:TX-allocate ITL entry事件。

   

   (5) 将需要修改的块的修改信息存储到PGA,存储名为change vector,修改一行时,一般分别创建undo segmet 头块的(change vector#1),

   撤销块(change vector#2),数据块(change vector#3)相应的change vector,进程将pga 的change vector以名为redo record(或redo entry)

   复制到重做缓冲区。再负责到重做缓冲区的过程中,需获得redo copy latch,redo allocation latch ,redo writing latch,在此过程

   中发生latch争用,分别等待latch:redo copy,redo allocation,latch redo writing事件。

   

   (6) 将此前的块的映像信息(before image)记录到撤销块(undo block),继而修改数据块,被修改的数据块变为脏的状态,而且,高速缓冲区

   上创建关于已修改的数据块的CR(consistent read)块,如果需修改的行正在被另外的事务所改变(即修改后事务尚未结束的状态),

   就要等待事务结束,此时会等待enq:TX-row lock contention事件。

   

   (7) 执行提交(commit)后给事务分配SCN。提交信息存储在重做缓冲区(redo buffer)

   

   (8) 回滚段头的事务表中存储已成功提交的信息,解除包括TX锁在内的所有资源占用。

   

   (9) 重做缓冲区的内容记录在重做日志文件上,修改的块之后被DBWR记录到数据文件中。




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论