真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle的ITL

一、ITL描述:

10年積累的成都網(wǎng)站建設(shè)、做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有桐鄉(xiāng)免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

ITL(Interested Transaction List)是Oracle數(shù)據(jù)塊內(nèi)部的一個組成部分,位于數(shù)據(jù)塊頭(block header),itl由xid,uba,flag,lck和scn/fsc組成,用來記錄該塊所有發(fā)生的事務(wù),一個itl可以看作是一條事務(wù)記錄。當(dāng)然,如果這個事務(wù)已經(jīng)提交,那么這個itl的位置就可以被反復(fù)使用了,因?yàn)閕tl類似記錄,所以,有的時候也叫itl槽位。如果一個事務(wù)一直沒有提交,那么,這個事務(wù)將一直占用一個itl槽位,itl里面記錄了事務(wù)信息,回滾段的入口,事務(wù)類型等等。如果這個事務(wù)已經(jīng)提交,那么,itl槽位中還保存的有這個事務(wù)提交時候的SCN號。

ITL個數(shù)其最小值為1,由參數(shù)initrans控制(由于兼容性的原因,oracle會在對象的存儲塊分配兩個itl,所以initrans的最小值實(shí)際上為2),最大值為255,由參數(shù)maxtrans控制,最大值參數(shù)在10g以后不能被修改,itl是block級的概念,一個itl占用塊46B的空間,參數(shù)initrans意味著塊中除去block header外一部分存儲空間無法被記錄使用(46B*initrans),當(dāng)塊中還有一定的free space時,oracle可以使用free space構(gòu)建itl供事務(wù)使用,如果沒有了free space,那么,這個塊因?yàn)椴荒芊峙湫碌膇tl,所以就可能發(fā)生itl等待。
如果在并發(fā)量特別大的系統(tǒng)中,最好分配足夠的itl個數(shù),其實(shí)它并浪費(fèi)不了太多的空間,或者,設(shè)置足夠的pctfree,保證itl能擴(kuò)展,但是pctfree有可能是被行數(shù)據(jù)給消耗掉的,如update,所以,也有可能導(dǎo)致塊內(nèi)部的空間不夠而導(dǎo)致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:事務(wù)id,在回滾段事務(wù)表中有一條記錄和這個事務(wù)對應(yīng)

Uba:回滾段地址,該事務(wù)對應(yīng)的回滾段地址

  第一段地址:回滾數(shù)據(jù)塊的地址,包括回滾段文件號和數(shù)據(jù)塊號

  第二段地址:回滾序列號

  第三段地址:回滾記錄號

  SELECT UBAFIL 回滾段文件號,UBABLK 數(shù)據(jù)塊號,UBASQN 回滾序列號,UBAREC 回滾記錄號 FROM v$transaction --查看UBA

Flag:事務(wù)標(biāo)志位。這個標(biāo)志位就記錄了這個事務(wù)的操作,各個標(biāo)志的含義分別是:

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

C--- = 事務(wù)已經(jīng)提交并且清除了行鎖定。

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

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

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

Lck:影響的記錄數(shù)

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

每條記錄中的行級鎖對應(yīng)于Itl列表中的序號,即哪個事務(wù)在該記錄上產(chǎn)生的鎖。

  

 二、ITL等待

      發(fā)生等待的場景:

     1.超過maxtrans配置的最大ITL數(shù)

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

      解決方法:

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

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

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

 

ITL重用后如何實(shí)現(xiàn)前ITL讀一致性

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

     假定block只有一個itl,假定第一個事務(wù)的時候產(chǎn)生了 ITL-0 

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

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

     這樣當(dāng)一個查詢?nèi)粜枰狪TL-0時候的信息,則找到當(dāng)前block,發(fā)現(xiàn)是 ITL-2 ,根據(jù)UBA找到回滾段進(jìn)行 roll 得到  變化前 block ,這個時候發(fā)現(xiàn)block中是 ITL-1 . 還不能滿足需求。 于是再根據(jù) ITL-1 中的 UBA 又去回滾段中找到數(shù)據(jù)來進(jìn)行roll,得到一個block 數(shù)據(jù),這個時候block中就有了 ITL-0。

     通過根據(jù)當(dāng)前ITL進(jìn)行遞歸的方式找到數(shù)據(jù),實(shí)現(xiàn)之前ITL的讀一致性。


分享標(biāo)題:oracle的ITL
轉(zhuǎn)載源于:http://weahome.cn/article/jghjhj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部