亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle ITL是什么

發布時間:2021-12-22 09:29:26 來源:億速云 閱讀:223 作者:iii 欄目:大數據

這篇文章主要講解了“Oracle ITL是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Oracle ITL是什么”吧!

一、ITL描述:

ITL(Interested Transaction List)Oracle數據塊內部的一個組成部分, 位于數據塊頭(block header),itlxid(Transaction XID)uba(Undo block address)flaglckscn/fsc組成,
用來記錄該塊所有發生的事務,一個itl可以看作是一條事務記錄。 當然,如果這個事務已經提交,那么這個itl的位置就可以被反復使用了,因為itl類似記錄,所以,有的時候也叫itl槽位。如果一個事務一直沒有提交,那么,這個事務將一直占用一個itl槽位,itl里面記錄了事務信息,回滾段的入口, 事務類型等等。如果這個事務已經提交,那么,itl槽位中還保存的有這個事務提交時候的SCN號。

Normal0falsefalsefalseMicrosoftInternetExplorer4

個數其最小值為1,由參數initrans控制(由于兼容性的原因,
oracle會在對象的存儲塊分配兩個itl,所以initrans的最小值實際上為2),
最大值為255,由參數maxtrans控制,最大值參數在10g以后不能被修改,
itlblock級的概念,一個itl占用塊46B的空間,參數initrans意味著塊中
除去block header外一部分存儲空間無法被記錄使用(46B*initrans),
當塊中還有一定的free space時,oracle可以使用free space構建itl供事務使用,
如果沒有了free space,那么,這個塊因為不能分配新的itl,所以就可能發生itl等待。
如果在并發量特別大的系統中,最好分配足夠的itl個數,其實它并浪費不了太多的空間, 或者,設置足夠的pctfree,保證itl能擴展,但是pctfree有可能是被行數據給消耗掉的, update,所以,也有可能導致塊內部的空間不夠而導致itl等待。

dump一個塊可以看到ITL信息類似如下:
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0006.002.0000158e 0x0080104d.00a1.6e --U- 734
fsc 0x0000.6c9deff0
0x02 0x0000.000.00000000 0x00000000.0000.00 ---- 0
fsc 0x0000.00000000

Xid:事務id,在回滾段事務表中有一條記錄和這個事務對應

Uba:回滾段地址,該事務對應的回滾段地址

第一段地址:回滾數據塊的地址,包括回滾段文件號和數據塊號

第二段地址:回滾序列號

第三段地址:回滾記錄號

SELECT UBAFIL 回滾段文件號,UBABLK 數據塊號,UBASQN 回滾序列號,
UBAREC 回滾記錄號 FROM v$transaction --查看UBA www.2cto.com

Flag:事務標志位。這個標志位就記錄了這個事務的操作,各個標志的含義分別是:

----- = 事務是活動的,或者在塊清除前提交事務

C--- = 事務已經提交并且清除了行鎖定。

-B-- = this undo record contains the undo for this ITL entry

--U- = 事務已經提交(SCN已經是最大值),但是鎖定還沒有清除(快速清除)。

---T =當塊清除的SCN被記錄時,該事務仍然是活動的,塊上如果有已經提交的事務,
那么在clean ount的時候,塊會被進行清除,但是這個塊里面的事務不會被清除。

Lck:影響的記錄數

Scn/Fsc:快速提交(Fast Commit Fsc)的SCN或者Commit SCN

每條記錄中的行級鎖對應于Itl列表中的序號,即哪個事務在該記錄上產生的鎖。

二、ITL等待

發生等待的場景:

1.超過maxtrans配置的最大ITL

2.initrans不足,沒有足夠的free space來擴展ITL

解決方法:

1.maxtrans不足:這一情況是由高并發引起的:同一數據塊上的事務量
已經超出了其實際允許的ITL數。因此,要解決這類問題就需要從應用著手,
減少事務的并發量;長事務,在保證數據完整性的前提下,增加commit的頻率,
修改為短事務,減少資源占用事件。而對于OLAP系統來說(例如,其存在高并發量的數據錄入模塊),可以考慮增大數據塊大小。

2.initrans不足:數據塊上的ITL數量并沒有達到MAX TRANS的限制,
發生這種情況的表通常會被經常UPDATE,從而造成預留空間(PCTFREE)被填滿。
如果我們發現這類ITL等待對系統已經造成影響,可以通過增加表的INITRANS或者 PCTFREE來解決(視該表上的并發事務量而定,通常,如果并發量高,建議優先增加INITRANS,反之,則優先考慮增加PCTFREE) www.2cto.com

  要注意的一點是,如果是使用ALTER TABLE的方式修改這2個參數的話,
只會影響新的數據塊,而不會改變已有數據的數據塊——要做的這一點,需要將數據 導出/導入、重建表。

ITL重用后如何實現前ITL讀一致性:

ORACLE通過ITL條目中記錄的回滾段地址找到回滾段,實現讀一致性,如果事務已提交, ITL就可以被重用,但是若前一個ITL被重用,前一個ITL的讀一致性是如何實現的呢?

假定block只有一個itl,假定第一個事務的時候產生了ITL-0

第二個事務來了,產生了 ITL-1 ,ITL-1 里面的UBA 可以找到回滾段地址,
回滾段中除了記錄了 block用戶數據的 before image 外還記錄了 ITL-0 的信息。

第三個事務來了,產生了 ITL-2 , ITL-2 UBA 指向回滾段,
回滾段中也記錄了 ITL-1 的信息。

這樣當一個查詢若需要ITL-0時候的信息,則找到當前block,發現是 ITL-2 ,
根據UBA找到回滾段進行 roll 得到 變化前 block ,這個時候發現block中是 ITL-1 .
還不能滿足需求。 于是再根據 ITL-1 中的 UBA 又去回滾段中找到數據來進行roll 得到一個block 數據,這個時候block中就有了ITL-0

通過根據當前ITL進行遞歸的方式找到數據,實現之前ITL的獨一致性。

感謝各位的閱讀,以上就是“Oracle ITL是什么”的內容了,經過本文的學習后,相信大家對Oracle ITL是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

时尚| 永吉县| 莲花县| 兴文县| 广宁县| 中卫市| 航空| 芜湖县| 文安县| 静乐县| 伽师县| 东方市| 宁陕县| 偃师市| 永济市| 太和县| 云安县| 石家庄市| 定日县| 常熟市| 安多县| 湖北省| 车险| 江都市| 揭东县| 贞丰县| 泊头市| 新乡市| 九江市| 慈利县| 孟州市| 金寨县| 鸡东县| 洮南市| 黄石市| 镇江市| 如东县| 托克逊县| 汽车| 郧西县| 葵青区|