Oracle排序的時候在PGA中的分割原則是 ?
使用者在對Data進行排序的時候,會先在PGA裡完成,如果排序Data太多,PGA記憶體不足,則Oracle會將要排序的data分割成多份,只取一份放在PGA中排序,其他部分都交換到臨時表空間中。當PGA中的部分排序完畢後,將排好序的部分資料交換到臨時表空間中,同時再從臨時表空間中取一份沒有排序的資料放到PGA裡面進行排序,依此類推,直到將所有資料都排序完畢為止 。
PGA是給伺服器程式使用的記憶體區域,假設有200個session , 100個需要排序, PGA空間不足以容納所有需要排序的資料,那麼Oracle會分割這些資料為多份, 個人理解, 應該是類似於將100個session中需要排序的資料以session或transaction為單位
20個20個分割,或者50個50個進行分割, 不知道大家如何理解 ?
------------------
糾正一下onepass和multipass的理解:
某些session 的pga 大小可以滿足排序資料,那麼在自己的pga中就可以完成排序,這個稱為optimal; 某些session 的 PGA空間不足以容納這個 session 所有需要排序的資料,那麼Oracle會分割這個session中需要排序的資料為多份(分片),按照上面的方式在pga和temp中反覆排序和臨時存放。 最後在temp中做最後一次merge動作, 如果分片數量小於merge寬度(不知道是否是一個隱含引數) ,那麼一次merge即可完成,稱為 onepass , 反之如果需要多次merge , 那麼是 multipass .
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-678456/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在JavaScript中什麼時候使用==是正確的?JavaScript
- 用oracle的job在搞分割槽的時候,經常出現分割槽沒有自動建的問題Oracle
- Oracle9i中的PGAOracle
- Oracle PGA自動管理在OLAP系統中的應用Oracle
- MySQL中的排序規則MySql排序
- 中國:現在是全面轉向Linux的時候嗎?Linux
- 單一職責原則在 iOS 中的應用iOS
- Java 中賦值類時候修改後原類中的值改變Java賦值
- Oracle9i中的PGA自動管理Oracle
- session是什麼時候建立的Session
- TreeView 在失去焦點的時候 選中的TreeNode仍為高亮View
- win10分割槽的時候g和m怎麼換算_win10分割槽的時候g和m如何換算Win10
- 是時候理清 React 開發中的一些疑惑了React
- 使用 chunkById 方法的時候請不要進行排序排序
- jivejdon2.5的程式碼在搜尋的時候總是有些問題
- Oracle PGA引數的管理Oracle
- petstore中TemplateServlet為什麼在部署的時候就執行了Servlet
- ORACLE 10G 在安裝CRS的時候,到節點選擇的時候不能顯示cluster節點列表Oracle 10g
- List,Map在遍歷的時候removeREM
- .NET CORE在publish的時候去掉pdb
- oracle 什麼時候才回收v$session 中status='KILLED'的程式OracleSession
- Dockerfile生成映象的時候是如何快取的?Docker快取
- 還在學iOS?是時候學習Flutter了(二)iOSFlutter
- 在Driver中呼叫I/O API的時候你考慮到了嗎API
- session的狀態什麼時候是snipedSession
- 設計模式中的那些原則設計模式
- 排序的列不是唯一值的時候如何分頁獲取?排序
- ES優化總結(特別是在bulk大量資料到ES的時候),持續續更新中。。。。優化
- 建立index時候要用到排序空間Index排序
- DBA 應遵循的 Oracle 調優原則Oracle
- 分割槽表中全域性及本地分割槽索引什麼時候會失效及處理索引
- Hive的分割槽和排序Hive排序
- 寫程式的時候,音樂是有講究的
- SERVER的排序規則Server排序
- 3、Oracle 中的過濾、排序Oracle排序
- 程式設計的首要原則是什麼?程式設計
- 在升級的時候使用VNC的小竅門VNC
- springframe中的petstore中的setServlet()什麼時候呼叫SpringServlet