如果我在PL/SQL存儲過程中使用許多CLOB變量來存儲很多長度較長的字符串,是否會有任何性能問題? CLOB的長度是否也是可變的? CLOB使用varchar2和long是否有任何已知的限制/缺點?Oracle PL/SQL:PL/SQL中的CLOB數據類型的性能
回答
CLOB的長度是可變的,是的。上限取決於您使用的Oracle版本和數據庫塊大小。對於11G,限制是「DB_BLOCK_SIZE參數的4G *值」(來自11G PL/SQL Language Reference)。 PL/SQL中的VARCHAR2值僅限於32767字節。
我沒有關於PL/SQL中CLOB和VARCHAR2的相對性能的明確信息,並且簡短的Google也沒有返回任何有用的信息。但是,我強烈懷疑VARCHAR2的表現通常比CLOB更好(對於可以存儲在其中的數據),因爲它更簡單。通過使用VARCHAR2編寫一個簡單的程序,並使用CLOB編寫一次簡單的程序,並且每運行1000次並比較總的運行時間,您可以輕鬆設置一個測試來證明這是正確的還是錯誤的。 Tom Kyte的Runstats實用程序在此非常有幫助,並顯示了Oracle資源方面的兩種方法之間的其他差異。
我的建議是:如果你的數據將超過32K,那麼你必須使用 CLOB;如果不是那麼不要使用CLOB,請使用VARCHAR2。
注意:如果CLOB超過VARCHAR2是更好地爲所有尺寸的字符數據,甲骨文將可能deprecate VARCHAR2,因爲他們沒有與長數據類型 - 但他們沒有。
與VARCHAR2相比,CLOB實際上更昂貴(更慢)並且更難以使用。如果你不必要地使用CLOB而不是VARCHAR2,那麼你正在遭受可衡量的性能損失。
最後,您應該如前所述,正確使用正確的數據類型。 1)如果您要在數據庫中存儲4000個字節或更少,請使用VARCHAR2,否則使用CLOB。
2)如果您在PLSQL中存儲32k字節或更少,請使用VARCHAR2,否則使用CLOB。
這是關於你所需要的一切。如果您的數據可以超過VARCHAR2限制,則使用CLOB,否則使用VARCHAR2。
至於明確的否定,考慮到在使用任何類型的LOB數據類型時,LOB可以是TEMPORARY(永遠不會存儲在表中的實際行中)或PERMANENT(存儲在表中的實際行中)。如果您在PLSQL中動態構建CLOB並將該CLOB傳遞給JAVA或其他外部客戶端,那麼您已經創建了一個臨時CLOB並將其推送到Oracle數據庫的控制之外。這意味着接受臨時CLOB的代碼現在負責在CLOB完成時釋放該CLOB。您的代碼必須具有可用於此目的的本機環境方法。如果你不這樣做,你的臨時存儲表空間將最終填滿,你的數據庫將停止(停止工作)。它不會崩潰,它只是不起作用。可能需要重新啓動。問題是許多開發工具(例如Java的許多版本)都沒有所需的庫調用。
祝你好運。
CLOB變量基本上是指針,所以它們本質上並不慢。問題在於訪問CLOB的內容。根據我的經驗:
- 依託Oracle的隱含CLOB < - > VARCHAR2轉換往往是慢。
- 使用
dbms_lob
程序包是合理的高性能。只是這樣做在一個循環:- 路線從您的CLOB數據塊到緩衝區
- 使用從緩衝區中的數據。也許把它轉換成另一塊數據。
- 將轉換後的數據塊寫入目標CLOB。
- 1. Oracle 10gR2 CLOB數據類型
- 2. Oracle CLOB性能
- 3. 查詢Oracle Clob數據類型
- 4. 數據檢索 - 在Oracle中使用CLOB列的性能
- 5. 壓縮java中的oracle clob數據類型
- 6. 如何在oracle sql中反轉clob數據類型的值?
- 7. Sybase TEXT與Oracle CLOB性能
- 8. Oracle中的大型數據類型長度性能影響?
- 9. 在oracle C++中使用clob數據類型
- 10. Oracle 10g:從XML中提取數據(選擇)(CLOB類型)
- 11. 如何在Oracle中將CLOB轉換爲CHAR數據類型?
- 12. 通過數據庫鏈接在Oracle數據庫中插入CLOB數據類型
- 13. 如何將CLOB類型列LONG類型列轉換Oracle數據庫中
- 14. Oracle無法從LONG數據類型轉換爲CLOB數據類型(incosistent數據類型錯誤)
- 15. 將數據類型Clob轉換爲Varchar2 Oracle
- 16. Oracle 12c:從XML(CLOB類型)提取數據(選擇)
- 17. Oracle SQL。如何更改表字段數據類型CLOB - > VARCHAR2
- 18. CLOB上的SUBSTR的性能
- 19. 通過Oracle中的DBLINK提高CLOB插入的性能
- 20. 在oracle中連接CLOB數據
- 21. 將CLOB插入到Oracle數據庫中
- 22. 問題 - 處理CLOB數據類型
- 23. 壞性格從Oracle CLOB
- 24. oracle數據類型
- 25. BLOB和CLOB數據類型相同的程序
- 26. 我應該如何在oracle中使用CLOB或NCLOB數據類型?
- 27. CLOB在ORACLE(JPA的,的EclipseLink)不節能
- 28. 如何向Oracle數據庫中的CLOB中包含的xml添加屬性?
- 29. 如何從db2中選擇CLOB數據類型數據
- 30. 數據庫性能和數據類型