Oracle Hint /*+APPEND*/插入性能總結

oracle append用法

Oracle中的APPEND用法主要用于提高數據插入的效率。

  • 基本用法:在使用了APPEND選項后,插入數據會直接加到表的最后面,而不會在表的空閑塊中插入數據。這種做法不需要尋找freelist中的free block,從而避免了在高水位線(HWM)下面尋找可插入的數據塊,因此可以顯著提高數據插入的速度。APPEND屬于direct insert,這意味著在歸檔模式下使用APPEND+TABLE NOLOGGING會大量減少日志的生成,而在非歸檔模式下,APPEND也會大量減少日志的生成。此外,APPEND方式插入只會產生很少的undo,從而進一步提高了效率。

  • 適用場景:當需要向表中快速插入大量數據時,使用APPEND可以顯著提高性能。例如,在INSERT INTO /*+ append*/ TABLEA SELECT * FROM TABLEB語句中,如果SELECT出來的數據量很大,使用APPEND可以提高效率。

  • 注意事項:

    1. 使用APPEND時,會在目標表上加一個lmode=6的排它鎖(TM enqueue),這會導致在APPEND操作進行時,其他用戶無法對表進行DML操作。
    2. 在不同版本的Oracle中,APPEND的用法有所不同。例如,在10g版本中,APPEND只能用于INSERT INTO..VALUES SELECT語句;而在11gR2版本中,INSERT VALUES也可以支持APPEND_VALUES。
    3. 使用APPEND/APPEND_VALUES時,必須先提交事務,否則查詢會報錯ORA-12838。
    4. 避免在單行insert中使用APPEND_VALUES,因為這可能導致極大的空間浪費。結合使用綁定變量和批量提交可以更有效地利用空間。

一、使用APPEND背景

業務過程中有類似把B表千萬級數據復制到A表,但是這個語句的效率特別差,需要1小時往上才能插入成功。

insert into A select * from B

二、使用APPEND效果

效果提升到了10來鐘

insert?? into? /*+APPEND*/ A select * from B

三、查看高水位表使用情況

set linesize 258 pagesize 999?
col WASTED_PERCENT format a20?
col owner for a30?
col table_name for a30?
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';?
SELECT owner,
table_name,?
ROUND(BLOCKS * 8192 / 1024 / 1024, 2) "total_size(M)",?
ROUND(num_rows * AVG_ROW_LEN / 1024 / 1024, 2) "used_size(M)",?
ROUND(((BLOCKS * 8192 / 1024 / 1024) -?
(num_rows * AVG_ROW_LEN / 1024 / 1024)),?
2) "wasted_size(M)",?
ROUND(ROUND(((BLOCKS * 8192 / 1024 / 1024) -?
(num_rows * AVG_ROW_LEN / 1024 / 1024)),?
2) / ROUND(BLOCKS * 8192 / 1024 / 1024, 2),?
2) * 100 || '%' wasted_percent,?
LAST_ANALYZED,?
NUM_ROWS?
FROM dba_tables?
WHERE owner='&owner' AND table_name in ('table_name')?
ORDER BY 6 desc;

?執行結果,發現浪費了40%的存儲空間

四、APPEND導致極大的空間浪費如何處理

如果空間浪費過多會導致當前表的處理性能下降,一直APPEND的意義不大。哪有什么方式來解決呢?

1、清空表

truncate table A

2、使用表分析

DBMS_STATS.GATHER_TABLE_STATS簡介,簡單的說,就是收集表和索引的信息,CBO根據這些信息決定SQL最佳的執行路徑。通過對表的分析,可以產生一些統計信息,通過這些信息oracle的優化程序可以進行優化。

exec dbms_stats.gather_table_stats(ownname=>'root',tabname=>'table_name',ESTIMATE_PERCENT => DBMS_STATS.AUTO_SAMPLE_SIZE,NO_INVALIDATE=> false,cascade=> true, method_opt =>'FOR ALL COLUMNS SIZE AUTO',degree=> 8);
?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/19794.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/19794.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/19794.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【計算機畢設】基于Spring Boot的課程作業管理系統 - 源碼免費(私信領取)

免費領取源碼 | 項目完整可運行 | v:chengn7890 誠招源碼校園代理! 1. 研究目的 課程作業管理系統旨在為教師和學生提供一個便捷的平臺,用于發布、提交和評定課程作業。本系統旨在提高作業管理的效率,促進教…

Golang反射

文章目錄 基本介紹reflect包reflect.Typereflect.Valuereflect.Kind具體類型、空接口與reflect.Value的相互轉換 反射應用場景修改變量的值訪問結構體的字段信息調用變量所綁定的方法實現函數適配器創建任意類型的變量 基本介紹 基本介紹 在Go中,反射(re…

錯誤 0x80070570:文件或目錄損壞且無法讀取/無法訪問[拒絕訪問]-解決方法

1.起因:在挪動U盤文件時,出現無法移動的報錯提示: and無法訪問[拒絕訪問]: 2.原因[大多是胡亂拔出U盤] [來自0x80070570 文件或目錄損壞且無法讀取 CHKDSK 修復方法-CSDN博客&#…

iOS AVFoundation 音視頻源碼分享

引言 在現代移動開發中,音視頻處理是一個不可忽視的重要領域。iOS 提供了強大的 AVFoundation 框架,使開發者能夠輕松實現音視頻錄制、播放、編輯等功能。無論是創建高效的視頻播放器,還是實現復雜的音頻處理,AVFoundation 都能提…

Leecode---買賣股票最大利潤問題

121—題目(只能買賣一次): 給定一個數組 prices ,它的第 i 個元素 prices[i] 表示一支給定股票第 i 天的價格。 你只能選擇 某一天 買入這只股票,并選擇在 未來的某一個不同的日子 賣出該股票。設計一個算法來計算你所…

python-pytorch編寫transformer模型實現問答0.5.00--訓練和預測

python-pytorch編寫transformer模型實現問答0.5.00--訓練和預測 背景代碼訓練預測效果背景 代碼寫不了這么長,接上一篇 https://blog.csdn.net/m0_60688978/article/details/139360270 代碼 # 定義解碼器類 n_layers = 6 # 設置 Decoder 的層數 class Decoder(nn.Module)…

【JavaEE進階】——帶你詳細了解Spring日志以及配置日志

目錄 🚩Spring日志的認識 🚩Spring日志的作用 🚩觀察日志 🚩使用日志 🎈在程序中得到日志對象 🎈使??志對象輸出要打印的內容 🚩日志框架的介紹 🎈門面模式(外觀模式&…

Unity實現簡單的第一人稱控制

先看效果 實現方式 1.首先創建一個腳本 2.編輯腳本內容 付上腳本代碼 private float RotationX 0;public float speed 2f;//移動速度// Use this for initializationvoid Start(){Cursor.lockState CursorLockMode.Locked;//鎖定鼠標到中心點Cursor.visible false;//隱藏鼠…

(CPU/GPU)粒子繼承貼圖顏色發射

GetRandomInfo節點(復制貼進scratch pad Scripts) Begin Object Class/Script/NiagaraEditor.NiagaraClipboardContent Name"NiagaraClipboardContent_22" ExportPath/Script/NiagaraEditor.NiagaraClipboardContent"/Engine/Transient.NiagaraClipboardConten…

uni-app+php 生成微信二維碼 分銷海報

主要代碼如下,可直接復制調試參數: //查詢當前用戶是否有分銷海報public function user_poster(){$this->checkAuth();//查詢會員信息$user $this->getUserInfoById($this->user_id);if(!empty($user[distribution_img])){$result[data] $use…

深入解析力扣170題:兩數之和 III - 數據結構設計(哈希表與雙指針法詳解及模擬面試問答)

在本篇文章中,我們將詳細解讀力扣第170題“兩數之和 III - 數據結構設計”。通過學習本篇文章,讀者將掌握如何設計一個數據結構來支持兩種操作,并了解相關的復雜度分析和模擬面試問答。每種方法都將配以詳細的解釋和ASCII圖解,以便…

頭歌數據結構與算法課程設計易 - 青蛙跳臺階

從前有一只青蛙想跳臺階去等峰&#xff0c;若該青蛙一次可以跳上1級臺階、也可以跳上2級、還可以跳3級。那么改青蛙從第0級臺階出發&#xff0c;在跳上第n級臺階且在第m級臺階停留過時有多少種跳法。 輸入描述&#xff1a; 第一行兩個正整數&#xff0c;n和m m<n 輸出描述&a…

kubernetes鏡像下載頁,離線安裝k8s的資源

kubernetes-apt-pool安裝包下載_開源鏡像站-阿里云 (aliyun.com) 【Kubernetes】Kubernetes各大版本的最新版本下載地址_kubet軟件下載-CSDN博客

單位職員尤其女性,若你有文才那將前途無量!

單位職員尤其女性&#xff0c;若你有文才那將前途無量&#xff01; 公司職員尤其女性&#xff0c;若文才出眾&#xff0c;恭喜你&#xff1a;提拔重用你是早晚的事&#xff01;不信看我給你分析-- 再說機關、企事業單位的職員&#xff0c;尤其是體制內職工&#xff0c;你若會寫…

C# List

C# List 創建 List:添加元素:使用 AddRange 方法添加多個元素&#xff1a;插入元素:訪問元素:移除元素:使用 Remove 方法移除一個元素&#xff1a;使用 RemoveAt 方法移除指定索引的元素&#xff1a;使用 RemoveAll 方法移除滿足條件的所有元素&#xff1a; 查找元素:使用 Cont…

Goby 漏洞發布|萬戶ezEIP企業管理系統 /member/success.aspx 命令執行漏洞

漏洞名稱&#xff1a;萬戶ezEIP企業管理系統 /member/success.aspx 命令執行漏洞 English Name&#xff1a;Wanhu-ez-EIP /member/success.aspx Command Execution Vulnerability CVSS core: 9.0 影響資產數&#xff1a;6175 漏洞描述&#xff1a; 萬戶ezEIP是一種企業資源…

在CentOS7下構建TeamSpeak服務器并增加網易云點歌插件

文章目錄 部署TeamSpeak創建一個新用戶下載并解壓服務端下載解壓 啟動服務端同意許可協議啟動與配置開放端口設置開機自啟 客戶端連接 部署TS3AudioBot并添加網易云插件安裝ffmpeg下載TS3AudioBot本體與插件并解壓配置TS3AudioBot啟動設置開機自啟 部署網易云API安裝git安裝Nod…

解讀vue3源碼-2

提示&#xff1a;看到我 請讓滾去學習 vue3編譯模版的提升 文章目錄 vue3編譯模版的提升靜態節點提升補丁標志和block的使用附錄&#xff1a; template explorer可以將我們的源模版轉化成渲染函數代碼&#xff0c;vue2中就有&#xff0c;而Vue3 template explorer 功能更加豐富…

外匯天眼:ESMA發布針對在投資服務中使用人工智能的公司的指導意見

歐洲證券和市場管理局&#xff08;ESMA&#xff09;&#xff0c;歐盟的金融市場監管機構和監督機構&#xff0c;發布了一份聲明&#xff0c;為在向零售客戶提供投資服務時使用人工智能技術&#xff08;AI&#xff09;的公司提供初步指導。 盡管人工智能的普及仍處于初期階段&am…

請描述Vue常用的修飾符

在 Vue 中&#xff0c;修飾符&#xff08;Modifiers&#xff09;常用于自定義指令&#xff08;Directives&#xff09;和事件監聽&#xff08;Event Listeners&#xff09;中&#xff0c;以改變指令或事件監聽器的默認行為。以下是一些 Vue 中常用的修飾符&#xff1a; 1. 事件…