日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Know more about commit

發(fā)布時間:2023/12/31 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Know more about commit 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
COMMIT操作是RDBMS中事務結(jié)束的標志,在Oracle中與commit緊密相關(guān)的是SCN(System Change Number)。 引入SCN的最根本目的在于:
  • 為讀一致性所用
  • 為redolog中的記錄排序,以及恢復
  • SCN由SCN Base和Scn Wrap組成,是一種6個字節(jié)的結(jié)構(gòu)(structure)。其中SCN Base占用4個字節(jié),而SCN wrap占用2個字節(jié)。但在實際存儲時SCN-like的stucture常會占用8個字節(jié)。 ub4 kscnbasub2 kscnwrpstruct kcvfhcrs, 8 bytes @100 Creation Checkpointed at scnub4 kscnbas @100 0x000a8849ub2 kscnwrp @104 0x0000 在Oracle中一個事務的開始包含以下操作:
  • 綁定一個可用的rollback segment
  • 在事務表(transaction table)上分配一個必要的槽位
  • 從rollback segment中分配undo block
  • 注意system rollback segment是一種特殊的回滾段,在10g以后普通回滾段的類型都變成了"TYPE2 UNDO",而唯有system rollback segment的類型仍為"ROLLBACK",這是由其特殊性造就的: SQL> col segment_name for a20 SQL> col rollback for a20 SQL> select segment_name,segment_type from dba_segments where segment_type='ROLLBACK';SEGMENT_NAME SEGMENT_TYPE -------------------- ------------------ SYSTEM ROLLBACK System rollback segment面向的是SYSTEM表空間上數(shù)據(jù)字典對象相關(guān)事務的數(shù)據(jù),以及由對用戶數(shù)據(jù)產(chǎn)生的遞歸SQL調(diào)用所產(chǎn)生的數(shù)據(jù)。 Oracle不使用基于內(nèi)存鎖管理器的行鎖,Oracle中的row lock是基于數(shù)據(jù)塊的。數(shù)據(jù)塊中的Interested Transaction List(ITL)是行鎖的重要標志。 ITL的分配遵循以下的原則:
  • 找出未被使用的ITL
  • 找出最老的已經(jīng)事務提交的ITL
  • 做部分的塊清理,直到有可用的ITL
  • 擴展ITL區(qū)域,一條ITL占用24字節(jié)
  • 當事務提交COMMIT時,需要完成以下步驟的操作:
  • 得到一個SCN值
  • 使用得到的SCN更新事務表中的槽位
  • 在redo log buffer中創(chuàng)建一條commit記錄
  • 將redo log buffer刷新到磁盤上的在線日志文件
  • 釋放表和行上的鎖(may cause delayed block cleanout)
  • 總結(jié)

    以上是生活随笔為你收集整理的Know more about commit的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。