有很多關於SQL Server中的緩存執行計劃如何取代存儲過程的大部分性能優勢而非動態SQL的很多信息。但是,我還沒有發現太多關於Oracle數據庫是否也是如此。有沒有人有關於Oracle中動態sql處理信息的信息或指針?最好是真實的表現數字,而不是一般的「sp's good」/「sp's bad」討論。動態SQL與Oracle上的存儲過程的性能
4
A
回答
7
Oracle也有一個緩存執行工具。查詢被哈希並匹配到計劃,如果它擊中散列表。您也可以使用此機制強制執行特定查詢的計劃。與SQL Server一樣,您需要使用參數化查詢來執行此操作,而不是將值替換爲字符串 - 因爲後者會生成不同的哈希值。
3
Oracle從不需要用於緩存計劃的存儲過程,所以這就是爲什麼沒有太多關於它的說法。存儲過程的主要性能優勢是光標高速緩存。我們的假設是,如果會話執行過一次PL/SQL,那麼會話很有可能會再次運行它。所以當存儲的PL/SQL的代碼告訴會話關閉一個遊標時,它通常不會立即關閉它。相反,它會保持它的分配,直到代碼顯示「我需要打開這個遊標(再次)」或者它需要內存。
這樣做的主要好處是在OLTP處理中,但是實際數量在站點之間會有很大差異。但有一個看看「的分析是分析是某個解析」的文章在這裏: http://www.oracle.com/technology/oramag/oracle/07-jul/o47asktom.html
0
有一種叫做客戶端語句緩存:http://www.oracle.com/technology/oramag/oracle/06-jul/o46odp.html
要知道,客戶端結果緩存和客戶端的聲明緩存是不同的野獸。
相關問題
- 1. Oracle SQL Developer上的存儲過程
- 2. 的SQL Server存儲過程的性能
- 3. 存儲過程的性能選擇SQL
- 4. 性能的LINQ VS SQL存儲過程
- 5. 返回存儲過程的SQL性能
- 6. PHP與Oracle存儲過程
- 7. SQL Server存儲過程性能問題
- 8. SQL Server - 存儲過程查詢性能
- 9. SQL Server - 存儲過程性能問題
- 10. iReport的與Oracle存儲過程
- 11. SQL Server動態存儲過程
- 12. 動態SQL Server存儲過程
- 13. 存儲過程動態WHERE條件SQL
- 14. 從SQL Server存儲過程執行Oracle存儲過程
- 15. 問題而將SQL Server存儲過程,Oracle存儲過程
- 16. 存儲過程與11+動態參數
- 17. Teradata存儲過程與動態參數
- 18. c#linq到包含動態sql的存儲過程的sql
- 19. oracle存儲過程
- 20. Oracle存儲過程
- 21. Oracle存儲過程
- 22. Oracle-存儲過程
- 23. 創建Oracle PL/SQL存儲過程
- 24. Oracle SQL - 無法創建存儲過程
- 25. Oracle SQL存儲過程光標打印
- 26. LINQ to SQL調用使用動態SQL的存儲過程
- 27. Oracle存儲過程與參數問題
- 28. 存儲過程中的SQL動態自動遞增列
- 29. 事務傳播和持久性上下文與Oracle存儲過程的同步
- 30. 存儲過程的性能問題
您需要澄清一下您的術語,因爲我們不會將每個SQL都稱爲「動態SQL」,並且您可以在存儲過程中使用「動態SQL」。 我假設你所指的動態SQL作爲客戶端SQL的問題? – 2008-12-17 01:25:38