日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
淺析:Oraclejdbc分頁效率的測試

經(jīng)過長時間學習Oracle,現(xiàn)在就關(guān)于Oracle jdbc分頁效率的測試和大家分享一下,希望看完本文的你肯定有不少收獲。

成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的永年網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

先寫了一個最簡單的jdbc分頁測試,在100萬記錄的情況下對數(shù)據(jù)庫進行absolute定位操作,從20萬開始取1頁記錄大約是5秒,但是再往上面加,比如40萬開始就內(nèi)存溢出了。這就說明oracle的jdbc在用absolute的時候確實是要逐行讀取數(shù)據(jù)的。另外發(fā)現(xiàn),設(shè)置fetchsize ,速度會有10%左右的提高。

然后改用oracle 自身的 rownum的方式進行分頁測試.

 
 
 
  1. SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM demo_table) A WHERE ROWNUM <= 200010) WHERE RN >= 200000

 執(zhí)行速度確實快了一些, 大約在2-3秒之間。但是這種方式應該是越到后面越慢,果然從90萬位置開始取, 大約是在13秒左右。這樣一來,修改實現(xiàn)方式好像就是必須的了, 但是奇怪的是,使用ibatis的分頁并沒有什么內(nèi)存溢出的問題,100萬記錄到最后一頁,感覺上大概也是10多秒。

看了一下ibatis的queryForList這個方法, debug了一下, 發(fā)現(xiàn)他有個判斷, 對于forward_only的類型的resultset 是用循環(huán)next來定位的(記得以前自己的分頁實現(xiàn)里面為了兼容性也做了這樣的處理),而不是我誤以為的absolute方式。

看來oracle的jdbc 對于forward_only的resultset做 next方法是不會產(chǎn)生真正的讀取操作。 用jdbc 測試了一下,果真如此。 從90萬記錄開始取,沒有出現(xiàn)內(nèi)存溢出的問題,執(zhí)行時間大約22秒左右。不知道這種差別在mysql和db2上是否也是如此,下次有時間再做一個測試看看。至于next和rownum執(zhí)行效率的差距, 我估計是前者必須用游標順序定位。

現(xiàn)在的問題就是, 兩者比較, 執(zhí)行時間只相差一倍而已,還是一個數(shù)量級別的,就為了這個做修改,還導致sql不可以跨數(shù)據(jù)庫,好像一點都不值得。甚至如果用戶不直接翻到最后幾頁,根本感覺不到速度差別。后來想想,老外有時候也是腦子壞了, 什么樣的項目會需要你沒事去翻上百萬記錄。還是保持原狀,丟在哪再說吧

測試環(huán)境:oracle9i 2版, 西文字符集。沒對其他參數(shù)進行測試。

以上就Oracle jdbc分頁效率的測試講了個簡單的例子,要想了解的更多相關(guān)問題的解決方案,請留意站上的相關(guān)帖子。


分享文章:淺析:Oraclejdbc分頁效率的測試
當前路徑:http://www.5511xx.com/article/ccdpcgi.html