日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

oracle结果集过大,多重子查询/大结果集查询问题

發(fā)布時(shí)間:2025/3/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle结果集过大,多重子查询/大结果集查询问题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

多重子查詢/大結(jié)果集查詢問(wèn)題:

問(wèn)題接此帖http://www.itpub.net/273652.html

上次問(wèn)題通過(guò)調(diào)整SGA/SQL語(yǔ)句得到優(yōu)化[最終情況:oracle關(guān)閉重起后,程序第一次執(zhí)行存儲(chǔ)過(guò)程(需要大量讀取物理文件):1500秒,等第2次跑時(shí)150秒(數(shù)據(jù)進(jìn)入sga區(qū)了),完全符合一切oracle教科書的內(nèi)容!]

現(xiàn)在的問(wèn)題是上次問(wèn)題的綜合,

起因: 在我們的應(yīng)用系統(tǒng)(OLTP,其他的事務(wù)都比較小且并發(fā)用戶也比較多)中有一個(gè)查詢重復(fù)的需求,比如企業(yè)/市/省/全國(guó)各級(jí)管理部門,每一級(jí)都需要查本級(jí)別管轄范圍內(nèi)是否存在重復(fù)的人員記錄,程序人員采用多重子查詢來(lái)實(shí)現(xiàn),其中select嵌套5層,子查詢的結(jié)果集返回?cái)?shù)也很巨大,不會(huì)小于20W行;

也曾嘗試使用臨時(shí)表,但臨時(shí)表(insert *** select )單獨(dú)跑select 還比較快,12秒吧,但是insert的過(guò)程比較慢,得20多分鐘

btw:臨時(shí)表這個(gè)對(duì)象放在哪了呢?對(duì)它的操作(尤其是大結(jié)果集時(shí))容易產(chǎn)生什么瓶頸呢?臨時(shí)表后邊也是接著一大堆的查詢條件,有可能還有優(yōu)化的,為什么單獨(dú)執(zhí)行SELECT比較快,而INSERT就慢呢?而且事務(wù)實(shí)在巨大,還有臨時(shí)表嵌套的情況啊!

(后來(lái)沒(méi)法子,又回到了多重子查詢的老路上來(lái),明知有問(wèn)題啊!)

測(cè)試環(huán)境(以下都是測(cè)試機(jī)上的運(yùn)行結(jié)果)/真實(shí)環(huán)境(年底上線,且還需要從SQL SERVER中遷移):

服務(wù)器: P4 2.8 內(nèi)存2G/ IBM H85 POWERPC 4顆/內(nèi)存 12G

軟件:win2k+oracle8.1.7.0/ aix 4.3.3+ oracle8.1.7.4

表現(xiàn):

oracle關(guān)閉重起后,程序第一次執(zhí)行存儲(chǔ)過(guò)程(需要大量讀取物理文件):1500秒,等第2次跑時(shí)150秒(數(shù)據(jù)進(jìn)入sga區(qū)了)

雖然第2次執(zhí)行存儲(chǔ)過(guò)程比較快的,可是每換一個(gè)部門,意即:查詢條件改變,就需要重新的1500秒!這個(gè)很顯然不能滿足客戶的要求,而且管理部門眾多,測(cè)試的是一個(gè)部門的一個(gè)查詢,實(shí)際的情況是N多的府縣道臺(tái),他們各有各的查詢,到時(shí)候豈不是歇菜了啊!

附件內(nèi)容:

1、存儲(chǔ)過(guò)程(Ora_PersonProc.sql/Ora_PersddonProc.sql)和最終的SELECT語(yǔ)句(XXXXXX.sql);

2、數(shù)據(jù)庫(kù)物理文件情況(data.jpg):

TEMP/RBS表空間都有擴(kuò)展,懷疑有大量的磁盤排序/回滾段請(qǐng)求導(dǎo)致擴(kuò)展(因?yàn)槭聞?wù)請(qǐng)求的數(shù)據(jù)實(shí)在太多了)

3、statspack報(bào)告(statspack3_4.txt):

是第2次運(yùn)行同樣的存儲(chǔ)過(guò)程時(shí)的前后SNAP,這個(gè)就比較快的(3分鐘左右),初步分析了一下:問(wèn)題語(yǔ)句不言自明,就是這個(gè)

Buffer Gets? ? Executions??Gets per Exec??% Total??Hash Value

--------------- ------------ -------------- ------- ------------

29,912,794? ?? ?? ?? ?1? ?29,912,794.0? ?100.0? ?4192360910

select et.* from (??Select enta.*,sd.FName as FPersonTypeName f

rom (??Select ed.*,svs.FSpecialityName,svs.FSpecialityTypeName,

svt.FName As FTechName ,svt.FLevel as FTechLevel,??sve.FName as

FEduName,sve.FLevel As FEduLevel from (??select ente.*, ent.FAd

dress,ent.FName??as FEnterpriseName from (??select ed3.* from??(

還有:

Execute to Parse %:??-46.32

是什么意思呢?

各位老大,還給看看有什么別的問(wèn)題么?

4、分析表時(shí)報(bào)錯(cuò)信息(analyze_error.txt):ora-00600

謝謝大家!

總結(jié)

以上是生活随笔為你收集整理的oracle结果集过大,多重子查询/大结果集查询问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。