使用mod對資料進行進行分組解決TEMP表空間不足的問題
一個統計SQL,消耗了100G TEMP報錯。
SELECT /*+ parallel(a,10) parallel(b,10) parallel(c,10) use_hash(a,b,c) */*
from TU_INT.I_PRD_OFFER_MEMBER_1 partition(p13) a,
tu_model.tb_prd_offer_inst_280 partition(p2) b,
TU_MODEL.TB_PRD_OFFER_ROLES c
where a.OFFER_ID = b.SRC_OFFER_INST_ID
and a.OFFER_ROLE_ID=c.OFFER_ROLE_ID(+);
主機空閒記憶體嚴重不足,嘗試了手工設定HASH區,一共分了7G PGA還是不行,不敢在分多。NESTED LOOP的速度客戶無法接受
於是想到了對資料進行分組
SELECT /*+ parallel(a,10) parallel(b,10) parallel(c,10) use_hash(a,b,c) */*
from TU_INT.I_PRD_OFFER_MEMBER_1 partition(p13) a,
tu_model.tb_prd_offer_inst_280 partition(p2) b,
TU_MODEL.TB_PRD_OFFER_ROLES c
where a.OFFER_ID = b.SRC_OFFER_INST_ID
AND MOD(a.OFFER_ID,10)=0
AND MOD(b.SRC_OFFER_INST_ID,10)=0
and a.OFFER_ROLE_ID=c.OFFER_ROLE_ID(+);
進行分組後,基本上TEMP消耗在20G左右,可以跑出來資料。
客戶可以接受
不過這個SQL挺奇怪的,對於1個17G的表和1個30多G的表HASH,在和一個20M的表做外連線,按照測試竟然需要200G以上的TEMP。感覺9I無法進行hash right outer join有關。有空在研究
SELECT /*+ parallel(a,10) parallel(b,10) parallel(c,10) use_hash(a,b,c) */*
from TU_INT.I_PRD_OFFER_MEMBER_1 partition(p13) a,
tu_model.tb_prd_offer_inst_280 partition(p2) b,
TU_MODEL.TB_PRD_OFFER_ROLES c
where a.OFFER_ID = b.SRC_OFFER_INST_ID
and a.OFFER_ROLE_ID=c.OFFER_ROLE_ID(+);
主機空閒記憶體嚴重不足,嘗試了手工設定HASH區,一共分了7G PGA還是不行,不敢在分多。NESTED LOOP的速度客戶無法接受
於是想到了對資料進行分組
SELECT /*+ parallel(a,10) parallel(b,10) parallel(c,10) use_hash(a,b,c) */*
from TU_INT.I_PRD_OFFER_MEMBER_1 partition(p13) a,
tu_model.tb_prd_offer_inst_280 partition(p2) b,
TU_MODEL.TB_PRD_OFFER_ROLES c
where a.OFFER_ID = b.SRC_OFFER_INST_ID
AND MOD(a.OFFER_ID,10)=0
AND MOD(b.SRC_OFFER_INST_ID,10)=0
and a.OFFER_ROLE_ID=c.OFFER_ROLE_ID(+);
進行分組後,基本上TEMP消耗在20G左右,可以跑出來資料。
客戶可以接受
不過這個SQL挺奇怪的,對於1個17G的表和1個30多G的表HASH,在和一個20M的表做外連線,按照測試竟然需要200G以上的TEMP。感覺9I無法進行hash right outer join有關。有空在研究
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8242091/viewspace-751981/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- TEMP表空間不足解決 - temp group
- swap空間不足問題解決
- 使用SQL按照區間進行分組SQL
- PostgreSQL中對日期時間進行分組SQL
- 處理TEMP表空間滿的問題
- system表空間不足的問題分析
- 建立一個加密表空間並對錶內資料進行加密的示例加密
- Go 語言之對不同型別的資料進行分組Go型別
- 解決IDEA中進行maven install報:系統資源不足的問題IdeaMaven
- 在多資料來源中對部分資料表使用shardingsphere進行分庫分表
- UNDO表空間不足解決方法
- dhtmlxGantt如何對任務進行分組使用教程HTML
- mybatis使用association的resultMap方式進行對映少資料問題MyBatis
- system表空間不足的問題分析(二)
- 進行版本迭代過程中,使用spring jpa來完美解決資料表更新的問題Spring
- sysaux 表空間不足問題處理UX
- 對Oracle分割槽表進行表空間遷移並處理ORA-14511問題Oracle
- 系統臨時表空間不足問題
- 【UNDO】使用重建UNDO表空間方法解決UNDO表空間過大問題
- 檢視單個SQL消耗TEMP表空間以及TEMP表空間使用率SQL
- 使用colmap對大規模場景進行分組重建
- oracle temp 表空間Oracle
- Oracle delete資料後的釋放表空間問題的解決 --轉Oracledelete
- OS 刪除temp表空間 而磁碟空間未釋放的解決方案
- Exce使用VBA對多於4列的資料進行組合排序排序
- 利用sqlldr工具進行資料遷移時發現的問題解決方法SQL
- 重建控制檔案後,對臨時表空間(temporary tablespace)進行重建
- MySQL使用event進行自動分表MySql
- 對read only表空間進行熱備份和使用備份的controlfile進行恢復時的一點總結!
- 基於Geomesa服務查詢軌跡資料無法根據空間和時間範圍進行查詢的問題解決辦法
- 如何解決 Linux 中“磁碟空間不足”的問題Linux
- db2解決load後系統空間不足問題DB2
- drop表空間以及對應的資料檔案後空間不釋放的問題
- 使用 SOS 對 Linux 中執行的 .NET Core 進行問題診斷Linux
- ASM磁碟組空間不足ASM
- Jmeter使用beanshell對資料進行加密傳輸JMeterBean加密
- iOS中使用RSA對資料進行加密解密iOS加密解密
- 解決Snackbar無法進行跨頁面展示的問題