在傳統裡面oracle對undo表空間和普通表空間是一視同仁的。都是在buffer cache裡面分配記憶體區,都是用dbwr程序定時寫到磁碟上。
乙個事務開始時,
在乙個相對空閒的undo段段頭裡面獲得乙個槽位,寫上事務資訊。
1.段頭可能不在記憶體裡面,就需要通過io把段頭放在記憶體裡去;
2.接下來獲得乙個undo回滾塊,可能undo回滾塊不在記憶體裡面,這是會發生io;
3.開始修改資料塊,把修改前的資料寫到undo回滾塊(update 原來的值在pga)裡,
這是oracle可能會出現rollback或者一致性讀(cr塊),oracle利用undo塊和buffer構造cr塊時,undo塊可能被寫到了磁碟上(oracle對待undo表空間的資料塊和普通資料檔案的資料塊是一樣的,既然是一樣的,undo塊極有可能被dbwr寫到磁碟上),就要從磁碟上調。對undo段的io對效能的影響很大。
在以前,回滾資料在undo段裡面,當我們要使用回滾段的時候,需要去找乙個buffer(undo buffer)如果記憶體中沒有的話,就要從磁碟調進來,就要發生物理io。
針對每乙個事務,oracle在shared pool中分配乙個imubuffer,imu buffer值用來記錄回滾資料。oracle使用imu不是針對回滾段段頭,也不是事務槽,而是回滾塊。imu buffer分配以後,往imu buffer寫回滾資訊時也要產生redo。imu buffer減少了物理io。
使用imu技術的好處:
1. 回滾的時候,直接從記憶體中用imu buffer就可以了,不要調磁碟;
2. 產生一致性讀(構造cr塊)的時候直接用imu buffer;
3. imu buffer的資料也產生redo,例項崩潰恢復時,imubuffer塊也會被恢復出來;
Spring管理事務
spring管理事務 platfromtransactionmanager 平台管理事務 幫助我們管理任意平台的事務 jdbc datasourcetransactionmanager hibernate hibernatetransactionmanager transactionmanager ...
Transactional管理事務
使用基於 transactional的spring配置 transactionmanager class org.springframework.orm.jpa.jpatransactionmanager datasource ref datasource entitymanage ctory re...
spring 管理事務
spring 管理事務 管理切面類 事務的回滾,提交 spring提供的 事務管理器 之前,之後,拋異常時 spring提供的 事務 切入點 目標類中的方法 我們自己篩選 帶著切面類中的 動態織入到切入點上 事務 帶著事務管理器中的 動態織入到切入點上 spring與jdbc結合事務的管理 1.通過...