update的機制問題
update的機制問題
[@more@]的機制問題
update 的時候,如果存在索引欄位的更新,則刪除原索引條目(不是真正的刪除資料,僅僅是在該行標記為 刪除)插入新的索引條目
對於row本身的更新,是在行物理地更改,如果行的長度增加到當前位置無法容納,則行的位置被提到 block的最上面一條記錄的位置之上,假如該塊已經無法容納,則在原來行的物理位置保留一個指標,行被遷移到新的block,而保留的指標就是指向新的block的位置。這時索引中rowid不用發生變化,查詢的時候先找到 那保留的指標,再去找 實際的新的位置。假如行遷移後再發生update 又導致遷移,則oracle首先看原來的位置的block是否具有容納該行的空間,如果有就又遷移回去,如果沒有就遷移到新的 塊,修改原來最早塊處的指標。 也就是說不會存在2個指標的查詢才能找到 行
更新的時候,變化前後變化後的資料都被寫入 redo ,變化前資料還被寫入 回滾段,變化後資料被應用於 data buffer
若假設存在表t(a,b,c)
update t set a = ... where b = ... and c = ...
則回滾段中只記錄 a 的變化前的值
關於update 的時候通常需要透過索引去定位,否則是全表掃描就很慢了
而insert 則只是找個 block 插進去,兩者的差異可能很大,可能完全不是一個數量級的時間和資源的消耗
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/222350/viewspace-907913/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 解決pod install update很慢的問題
- 聊一聊Integer的快取機制問題快取
- 02.Android之IPC機制問題Android
- Django 中的資料庫update() 和 save() 方法的機制的不同Django資料庫
- 理解Cookie和Session機制,及其安全問題CookieSession
- 06.Android之訊息機制問題Android
- 由select for update鎖等待問題引發的深入思考
- 解決Rust -- update crates.io過慢的問題Rust
- 聲網 Token 鑑權機制,以及常見的問題
- MySQL中SELECT+UPDATE併發更新問題MySql
- web安全機制問題詳解之二:CSRFWeb
- web安全機制問題詳解之一:XSSWeb
- LeetCode第 146 號問題: LRU 快取機制LeetCode快取
- C# Redis 過期機制不生效問題C#Redis
- InnoDB儲存引擎鎖機制(五、 常見問題)儲存引擎
- 全面瞭解mysql鎖機制(InnoDB)與問題排查MySql
- 記一次 MySQL select for update 死鎖問題MySql
- 解決ROS國內rosdep init和update的相關問題ROS
- 解決maven update project 後專案jdk變成1.5的問題MavenProjectJDK
- 負數的二進位制數問題
- 記一次線上問題引發的對 Mysql 鎖機制分析MySql
- 函式宣告與變數宣告的提升機制優先順序問題函式變數
- Mac OSX系統homebrew update Fetching failed問題解決方案MacAI
- Android資源訪問機制Android
- 使用CoordinatorLayout過程中遇到的兩個問題以及淺析CoordinatorLayout工作機制
- 學習 Android Handler 訊息機制需要注意這些問題!Android
- Java ArrayList原始碼分析(含擴容機制等重點問題分析)Java原始碼
- mysql 高併發 select update 併發更新問題解決方案MySql
- 執行npm update等命令出錯後如何分析問題根源NPM
- HDFS 02 - HDFS 的機制:副本機制、機架感知機制、負載均衡機制負載
- SparkStreaming推測機制:面試被問遇到什麼問題,說這個顯水平!Spark面試
- 記一次線上問題 → 對 MySQL 的 ON UPDATE CURRENT_TIMESTAMP 的片面認知MySql
- dfs的return時機問題
- 停機問題
- 遞回應用場景和呼叫機制以及問題和規則
- [Mark]解決ElasticSearch深度分頁機制中Result window is too large問題Elasticsearch
- 二進位制修復中文亂碼的問題
- 基礎問題:進位制轉換
- Oracle中的for update 和 for update nowaitOracleAI