ORDER BY 在oracle中執行的大概過程
使用者在對Data進行排序的時候,會先在PGA裡完成,如果排序Data太多,PGA記憶體不足,則Oracle會將要排序的data分割成多份,只取一份放在PGA中排序,其他部分都交換到臨時表空間中。當PGA中的部分排序完畢後,將排好序的部分資料交換到臨時表空間中,同時再從臨時表空間中取一份沒有排序的資料放到PGA裡面進行排序,依此類推,直到將所有資料都排序完畢為止 。
某些session 的pga 大小可以滿足排序資料,那麼在自己的pga中就可以完成排序,這個稱為optimal; 某些session 的 PGA空間不足以容納這個 session 所有需要排序的資料,那麼Oracle會分割這個session中需要排序的資料為多份(分片),按照上面的方式在session的pga和temp中反覆排序和臨時存放。 最後在temp中做最後一次merge動作, 如果分片數量小於merge寬度(不知道是否是一個隱含引數) ,那麼一次merge即可完成,稱為 onepass , 反之如果需要多次merge , 那麼是 multipass .
當系統整體負載不大時,Oracle傾向於為每個session的PGA分配optimal尺寸大小的SQL工作區。
當系統負載升高時,同時執行的SQL越來越多,Oracle就傾向於為每個人session的PGA分配onepass 尺寸大小的SQL工作區, 甚至multipass尺寸的SQL工作區。
某些session 的pga 大小可以滿足排序資料,那麼在自己的pga中就可以完成排序,這個稱為optimal; 某些session 的 PGA空間不足以容納這個 session 所有需要排序的資料,那麼Oracle會分割這個session中需要排序的資料為多份(分片),按照上面的方式在session的pga和temp中反覆排序和臨時存放。 最後在temp中做最後一次merge動作, 如果分片數量小於merge寬度(不知道是否是一個隱含引數) ,那麼一次merge即可完成,稱為 onepass , 反之如果需要多次merge , 那麼是 multipass .
當系統整體負載不大時,Oracle傾向於為每個session的PGA分配optimal尺寸大小的SQL工作區。
當系統負載升高時,同時執行的SQL越來越多,Oracle就傾向於為每個人session的PGA分配onepass 尺寸大小的SQL工作區, 甚至multipass尺寸的SQL工作區。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14184018/viewspace-764229/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle ASM Rebalance執行過程OracleASM
- Javascript中new的執行過程JavaScript
- KVC中setValue:forKey:的執行過程
- MySQL Order BY 排序過程MySql排序
- Oracle資料庫SQL語句執行過程Oracle資料庫SQL
- jsp的執行過程JS
- 指令的執行過程
- 【SQL】Oracle避免動態SQL,提高過程執行效率SQLOracle
- Java 執行過程中的記憶體模型Java記憶體模型
- webpack loader 的執行過程Web
- Redis 命令的執行過程Redis
- 執行緒池建立執行緒的過程執行緒
- Jtti:如何修復Oracle資料庫執行過程的問題JttiOracle資料庫
- 在Oracle中,如何得到真實的執行計劃?Oracle
- javascript引擎執行的過程的理解--執行階段JavaScript
- 不為人知的技術--Oracle並行非同步執行儲存過程Oracle並行非同步儲存過程
- 一條Sql的執行過程SQL
- maven外掛執行過程中自動執行sql檔案MavenSQL
- Java 程式執行過程Java
- Spark程式碼在叢集上執行過程理解Spark
- SQL中rownum和order by的執行順序的問題SQL
- 服務執行過程中磁碟壞道引起的思考
- 在 Kubernetes 中執行 Oracle 資料庫的新方法Oracle資料庫
- 原始碼分析OKHttp的執行過程原始碼HTTP
- 淺析Java程式的執行過程Java
- js函式執行過程的探究JS函式
- 如何查詢一個儲存過程是否在執行儲存過程
- 程式語言執行過程
- MapReduce 執行全過程解析
- JS引擎執行緒的執行過程的三個階段JS執行緒
- 模擬主執行緒等待子執行緒的過程執行緒
- 關於 AppCrawler 執行過程中的幾個小問題APP
- Oracle - 執行過的SQL、正在執行的SQL、消耗資源最多的SQLOracleSQL
- 執行時的頁面構建過程
- Java執行緒池的增長過程Java執行緒
- MySQL學習 - 查詢的執行過程MySql
- MySQL innodb引擎的事務執行過程MySql
- MySQL 中一條 sql 的執行過程MySql
- PostgreSQL的insert語句執行過程分析SQL