ORA_ROWSCN與按照commit時間對記錄進行排序
問題的提出:
在併發的環境下,每個sql先執行的不一定先提交,因此想如何才能按照事務提交的順序來對記錄進行排序而不是按照sql執行的時間。
先來說說sysdate或者systimestamp,如果系統中使用這樣的列來記錄每個記錄最後提交的時間,那是錯誤的。而且很多人認為這個時間如果設定為default值,那麼記錄的就是sql執行的時間,其實也是錯誤的。oracle 10.2 版本的concept第388頁有這樣一句話“Default values are included as part of an INSERT statement before the statement is parsed.”因此可以看到,把列的default值設定為預設值,或者insert into table(col1...) values (sysdate,...)的方式最後得到的時間都是sql解析的時間而不是sql執行的時間。
ORA_ROWSCN是oracle 10G版本中提出的概念,是一個偽列,用來記錄資料提交時候的scn,而scn是唯一的,而且scn的先後就是commit的時間的先後(雖然事務commit不是導致scn增長的唯一因素)。因此可以按照這個偽列進行排序,得到的結果就是事務提交的先後進行的排序。
預設的建表方式的ORA_ROWSCN記錄的scn是精確到每個block而不是精確到block中的每個row的,因為ORA_ROWSCN取自data block header的scn。要使用此特性需要使用以下方式建表:create table tab(col1 number) rowdependencies。這樣就可以為每個列儲存自己的scn,需要增加每行資料6個位元組的空間的開銷。
另外,oracle還提供了ORA_ROWSCN到TIMESTAMP的轉換,可以得到每個記錄最後的修改時間,但這個時間和真正的資料發生變化的時間有誤差,誤差在正負3秒(引用自TOM,是否是因為每3秒SCN會刷一次有關呢?有待驗證)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25016/viewspace-921602/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於python對B站收藏夾按照視訊釋出時間進行排序Python排序
- 「Js」物件按照鍵名來進行排序JS物件排序
- linux 中awk命令實現按照 指定的字元對文字進行排序Linux字元排序
- 欄位按照指定 ID 順序進行排序排序
- 對字典進行排序排序
- Python對字典進行排序Python排序
- PostgreSQL中對日期時間進行分組SQL
- 如何不用演算法對陣列進行(0時間複雜度,0空間複雜度)排序?演算法陣列時間複雜度排序
- pandas 按照列進行求和
- python 對字典的值進行排序Python排序
- 按照價格排序!排序
- 記錄:git commit提交時沒有使用-m新增註釋進入了VIM模式的處理GitMIT模式
- 壓測時介面都按照順序去執行對嗎?
- ORDER對查詢結果進行排序排序
- 一個命令對文字進行高效排序排序
- mysql 字串型別的數值欄位按照數值的大小進行排序MySql字串型別排序
- git如何清空所有的commit記錄GitMIT
- SQLServer用函式實現對字串按照特定字元進行拆分SQLServer函式字串字元
- 短視訊平臺開發,自動按照使用者設定進行時間轉換
- golang gin框架進行時間運算之解決orm時間與時間運算——附原始碼Golang框架ORM原始碼
- 如何在Python中對dicts列表進行排序Python排序
- 使用Collections對list的內容進行排序排序
- gitLab進行CI配置記錄Gitlab
- MySQL Cases-記錄大量waiting for handler commitMySqlAIMIT
- Elasticsearch為記錄新增時間戳timestampElasticsearch時間戳
- Oracle之多行記錄變一行記錄,行變列,並排序(wmsys.wm_concat)Oracle排序
- 如何在dhtmlxGantt網格中對任務進行排序和重新排序HTML排序
- win10按照時間搜檔案如何操作 win10按照時間怎麼搜尋程式和檔案Win10
- apscheduler 在伺服器上沒有按照指定的時間執行定時任務伺服器
- 如何對伺服器進行24小時不間斷監控?伺服器
- Django(76)isort工具對import匯入進行排序DjangoImport排序
- 147. 對連結串列進行插入排序排序
- 對N個數進行從大到小排序排序
- 用xgboost模型對特徵重要性進行排序模型特徵排序
- Win10時間軸記錄怎麼刪除?Win10時間線記錄的清除方法Win10
- 使用NTP原理進行時間同步
- Js實現Object按照值的某個欄位(數值型別)的大小進行排序JSObject型別排序
- 使用 chunkById 方法的時候請不要進行排序排序