91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 數據庫 > 
  • 刪除一張大表時為什么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

南阳市| 龙陵县| 准格尔旗| 林州市| 普洱| 罗平县| 都江堰市| 平陆县| 盐池县| 增城市| 太和县| 阿尔山市| 翁源县| 大宁县| 岳池县| 土默特左旗| 尚志市| 随州市| 黔江区| 张北县| 木兰县| 新绛县| 芜湖市| 东宁县| 绥棱县| 射阳县| 富川| 涟源市| 侯马市| 绵阳市| 桐庐县| 南木林县| 湖南省| 赞皇县| 稻城县| 绩溪县| 江川县| 襄垣县| 惠州市| 镇安县| 沭阳县|