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

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 數據庫 > 
  • 刪除一張大表時為什么undo占用空間接近原表兩倍

刪除一張大表時為什么undo占用空間接近原表兩倍

發布時間:2021-11-29 16:21:02 來源:億速云 閱讀:192 作者:柒染 欄目:數據庫

這篇文章將為大家詳細講解有關刪除一張大表時為什么undo占用空間接近原表兩倍,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

概述

Oracle中,undo是保存記錄的前鏡像的,我理解如果delete from  t;那產生的undo應該和t表的大小差不多,但測試結果卻差的很遠,undo產生的量基本上是t表大小的兩倍,不知道為什么,難道我理解錯了?下面看下這個奇怪的現象。

刪除一張大表時為什么undo占用空間接近原表兩倍

1. delete了8個小時

刪除一張大表時為什么undo占用空間接近原表兩倍

2. 原表大小

可以發現原表也就16.5G,需要刪的數據是9G。

刪除一張大表時為什么undo占用空間接近原表兩倍

3. 查看undo塊

這里忘記截圖了,但是是有300多萬個塊,查看對應占用的undo空間是占了30多G,遠遠超過原表的大小。

為什么undo會占用這么多空間?

從原理上講,UNDO表空間,有四個作用:

  • 回滾事務;

  • 一致性讀;

  • 事務恢復;

  • 閃回查詢

請教楊長老得到的一些信息:

對于回滾事務,他保存的是修改值的前鏡像,注意,不是修改的數據塊,或者整行記錄的鏡像。

除了考慮表大小之外,還有表上索引的總大小,是否存在觸發器,物化試圖日志等等。另外,看看數據庫級的supplemental log是否打開。

undo是記錄事物修改前鏡像的,而delete的前鏡像就是表中存儲的數據。當然有一些可能會導致前鏡像比表中的原始數據大,比如壓縮,11g后存在的非空默認值。

另外,undo的記錄一定有一些額外的成本,比如rowid,scn等信息,如果表中行記錄本身很小,那么這些成本就會顯得非常突出。

如果要非常精確地知道,多出來的每一個信息是多少,確實有些困難,但通過這個實驗,至少能了解到,一次delete操作刪除的容量,UNDO為了保存前鏡像,需要占據的容量,要比他多得多,這就是為什么不推薦一次delete操作刪除過多數據的原因之一。

總之,對于delete大量數據的情況一定要分批進行,寧愿時間花多點,風險也會少很多,避免意外導致回滾而造成的數據庫卡頓。

關于刪除一張大表時為什么undo占用空間接近原表兩倍就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

赤峰市| 胶南市| 河曲县| 新田县| 内江市| 衡东县| 霍林郭勒市| 诸暨市| 贺兰县| 南投县| 新郑市| 河南省| 澄城县| 宜城市| 云林县| 南靖县| 资源县| 巴楚县| 普兰店市| 南岸区| 台南县| 健康| 额济纳旗| 遂昌县| 长海县| 伊金霍洛旗| 陆丰市| 扶绥县| 开封县| 新巴尔虎右旗| 乐平市| 淮北市| 芮城县| 曲阳县| 沐川县| 嘉祥县| 玉田县| 云浮市| 盐山县| 团风县| 梓潼县|