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 DDL 執行過程Oracle
- Javascript中new的執行過程JavaScript
- Oracle ASM Rebalance執行過程OracleASM
- Oracle SQL 語句的執行過程OracleSQL
- oracle 執行過程中 /dev/shm 下是什麼Oracledev
- 理解oracle執行sql語句的過程OracleSQL
- MySQL Order BY 排序過程MySql排序
- Oracle中執行儲存過程call和exec區別Oracle儲存過程
- KVC中setValue:forKey:的執行過程
- 判斷某過程是否在執行的方法
- HPUX 磁帶恢復的大概過程UX
- Oracle DDL 執行過程【Blog 搬家】Oracle
- ORACLE 陣列在過程中的應用Oracle陣列
- oracle 如何終止儲存過程的執行Oracle儲存過程
- oracle儲存過程(procedure)中執行動態SQL小記Oracle儲存過程SQL
- Java 執行過程中的記憶體模型Java記憶體模型
- 程式執行過程中的記憶體活動記憶體
- 儲存過程中巢狀儲存過程的變數執行方式儲存過程巢狀變數
- sql 執行過程SQL
- Redis 命令的執行過程Redis
- HiveSQL的執行過程分析HiveSQL
- jsp的執行過程JS
- PL/SQL在執行過程中,對其依賴的表,函式,過程都加lock和pin嗎?SQL函式
- 執行緒池建立執行緒的過程執行緒
- Oracle資料庫SQL語句執行過程Oracle資料庫SQL
- Oracle:建立JOB定時執行儲存過程Oracle儲存過程
- ORACLE sql 語句的執行過程(SQL效能調整)OracleSQL
- maven外掛執行過程中自動執行sql檔案MavenSQL
- SQL中rownum和order by的執行順序的問題SQL
- order by在SQL Server與Oracle中的一個區別SQLServerOracle
- javascript引擎執行的過程的理解--執行階段JavaScript
- sql執行過程分析SQL
- Java 程式執行過程Java
- 一條Sql的執行過程SQL
- webpack loader 的執行過程Web
- Spark程式碼在叢集上執行過程理解Spark
- 在.NET中用儲存過程執行SQL語句儲存過程SQL
- 執行遠端DBMS_LOB包中過程