新聞中心
oracle怎么解決報(bào)表 慢?
Oracle可以通過(guò)以下方式來(lái)解決報(bào)表慢的問(wèn)題:

創(chuàng)新互聯(lián)公司是專(zhuān)業(yè)的欽南網(wǎng)站建設(shè)公司,欽南接單;提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行欽南網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
首先,可以嘗試優(yōu)化SQL查詢(xún)語(yǔ)句,通過(guò)使用合適的索引、合理的連接和過(guò)濾條件來(lái)提高查詢(xún)性能;
其次,可以考慮增加硬件資源,例如增加內(nèi)存、CPU等來(lái)提升數(shù)據(jù)庫(kù)服務(wù)器的性能;
另外,可以考慮使用Oracle的性能調(diào)整工具,如SQL Tuning Advisor等來(lái)識(shí)別并優(yōu)化慢查詢(xún);
最后,還可以考慮使用Oracle的緩存技術(shù),如數(shù)據(jù)緩存、結(jié)果集緩存等來(lái)加快報(bào)表的生成速度。通過(guò)以上方法綜合使用,可以有效解決報(bào)表慢的問(wèn)題。
查看相關(guān)的os指標(biāo),比如cpu,io,cache等瓶頸在那些進(jìn)程上; 通過(guò)v$session_wait,v$locked_object,v$session,v$process,v$sqltext_with_newlines等看看具體的username,sql語(yǔ)句,object,index,執(zhí)行計(jì)劃等等。。。。。。
總之,是很容易發(fā)現(xiàn)系統(tǒng)的瓶頸在那里的,然后開(kāi)始tuning吧
Oracle在插入大量數(shù)據(jù)時(shí)速度會(huì)越來(lái)越慢,請(qǐng)問(wèn)有什么解決辦法?
加快oracle數(shù)據(jù)庫(kù)插數(shù)據(jù)速度方法:
從編程角度考慮:
1 使用綁定變量,達(dá)到一次預(yù)編譯多次執(zhí)行的效果。如果不使用綁定變量,數(shù)據(jù)庫(kù)每次都要對(duì)sql進(jìn)行分析,消耗資源。
2 使用oracle提供的批量接口,這樣可以減少網(wǎng)絡(luò)傳輸次數(shù),加快效率
3 適當(dāng)增加commit間隔,commit指令比較消耗數(shù)據(jù)庫(kù)資源,盡量多插入一些數(shù)據(jù)再提交。建議一千條以上。
4 使用hint(如+append),使用insert 語(yǔ)句 nologging選項(xiàng),減少數(shù)據(jù)庫(kù)日志登記。
5 考慮使用多進(jìn)程插入或者使用并行hint插入
從數(shù)據(jù)庫(kù)角度考慮:
1 把表改成nologging模式,這樣不用登記回滾日志
2 對(duì)表進(jìn)行分區(qū),讓不同分區(qū)落在不同硬盤(pán)
如果是DML語(yǔ)句的話(huà),需要看執(zhí)行計(jì)劃,并根據(jù)業(yè)務(wù)需求是否使用HINT,物理內(nèi)存可以表空間分離,使磁盤(pán)I/O量平均分磁盤(pán),或者擴(kuò)大SGA,再或者增加物理配置,總之有很多選擇!
不存在這個(gè)問(wèn)題
既然是大量數(shù)據(jù)插入 它是一個(gè)批處理 你怎么知道越來(lái)越慢的 要么就直接跑幾個(gè)小時(shí) 怎么就越來(lái)越啦?
數(shù)據(jù)插入 無(wú)非是加鎖 寫(xiě)日志 寫(xiě)熱數(shù)據(jù) 后來(lái)定時(shí)回盤(pán)
如果比以往慢 一般就是還有其他大事務(wù)
Oracle查詢(xún)時(shí),第一次查詢(xún)很慢,第二次及以后查詢(xún)速度就很快了,那后面的查詢(xún)的結(jié)果集會(huì)不會(huì)不是最新的?
ORACLE 不會(huì)自動(dòng)建立索引,之所以快是因?yàn)閺膬?nèi)存中讀取比disk IO要快的原因。
LZ的概念理解有誤,我來(lái)舉例說(shuō)明下。
ORACLE data一般緩存在SGA中的data cache中 1.表A有10000條數(shù)據(jù),在0:00時(shí)刻對(duì)其進(jìn)行查詢(xún),則將表A的所有數(shù)據(jù)塊從disk緩存至data cache中。因此第二次查詢(xún)時(shí)直接從data cache中獲得速度變快。 2.0:05時(shí)刻 對(duì)表A進(jìn)行更新等操作,20000行。再次對(duì)表A進(jìn)行查詢(xún),之前沒(méi)有變化的數(shù)據(jù)塊仍然直接從data cache中直接獲得。發(fā)生過(guò)變更,或新增的數(shù)據(jù)塊,需要重新從disk讀入data cache中,如果data cache空間已滿(mǎn),就會(huì)將之前發(fā)生變更的臟數(shù)據(jù)塊及不常使用的數(shù)據(jù)塊清空出data cache,然后緩存新的數(shù)據(jù)塊。 因此整個(gè)過(guò)程中,不會(huì)出現(xiàn)你說(shuō)的只能查到緩存數(shù)據(jù)的現(xiàn)象。分析你遇到的問(wèn)題,很有可能是你用userA 進(jìn)行查詢(xún)后發(fā)現(xiàn)表10000行,然后使用userB進(jìn)行更新至20000行,但是userB并沒(méi)有commit。因此userA在查詢(xún)時(shí)仍然只能看到10000行。
到此,以上就是小編對(duì)于oracle數(shù)據(jù)庫(kù)很卡的問(wèn)題就介紹到這了,希望這3點(diǎn)解答對(duì)大家有用。
文章題目:oracle怎么解決報(bào)表慢?(oracle數(shù)據(jù)庫(kù)卡慢怎么解決)
URL網(wǎng)址:http://m.fisionsoft.com.cn/article/dhedcco.html


咨詢(xún)
建站咨詢(xún)
