亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

頻繁的操作數據庫是不是導致性能低下的原因呢?

頻繁的操作數據庫是不是導致性能低下的原因呢?

嗶嗶one 2023-04-09 13:09:25
我公司是做erp系統的,現在要求做一個款號轉數的task,由于每天款號轉數的數據量比較大,而且款號涉及的一些關聯要也要進行轉數,所以有時候會導致out of momery ,要進行修改! 原代碼是用hibernate實現的, list = gzBma00160pDAO.getTransferData(Bma00160p.class,object); if(list!=null){ for(Iterator it = list.iterator();it.hasNext();){ Bma00160p newBma00160p = new Bma00160p(); BeanUtils.copyProperties(it.next(), newBma00160p); try{ Bma00160p bma00160p = bma00160pDAO.getBma00160p(newBma00160p.getBma00160pPK()); if(bma00160p!=null){ newBma00160p.setState(BaseObject.UPDATEMODE_MODIFY); }else{ newBma00160p.setState(BaseObject.UPDATEMODE_INSERT); } newBma00160p.setDlastmodifytime(nowtime); bma00160pDAO.saveObject(newBma00160p); }catch(Exception e){ ERPTaskErrorMailListener.addMessage("BMA00160P出錯,代號: " + newBma00160p.getBma00160pPK()); LogUtils.warn("bma00160p error : " + newBma00160p); e.printStackTrace(); } } list.clear(); } 每個表查詢轉數的代碼如上,每次都通過本地的對象get遠程的對象,看有沒有存在,有則update否則insert,這樣如果數據量大,頻繁的操作數據庫是不是導致性能低下的原因呢?如果我換成jdbc,寫sql語句一次性update 或 insert 會不會性能有所提升?但這樣的話就要建立臨時表去存放本地的數據給遠程用... 望高手能給予解答,謝謝
查看完整描述

2 回答

?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

感覺 化整為零 分批次 一股腦 轉換 數據量大的化 肯定報溢出 以前導出Excel 就是數據量大 最后通過 改jvm大小 再分sheet 我想轉換原理差不多 分批次

查看完整回答
反對 回復 2023-04-12
?
largeQ

TA貢獻2039條經驗 獲得超8個贊

看了這個應該可以使用sql直接完成吧。 
不同庫可以使用遠程datalink也可以實現 

update bma00160p.Bma00160p t set state=BaseObject.UPDATEMODE_MODIFY  

where t.pk in (select pk from gzBma00160p.Bma00160p where ....)    

insert into bma00160p.Bma00160p () values   

select ..., BaseObject.UPDATEMODE_INSERT as state from gzBma00160p.Bma00160p where ....  


呵呵,你這個地方的list多大,我處理過一個表30W的記錄也沒見內存暴的情況,當然不是hibernate了,hibernate處理不過來。


查看完整回答
反對 回復 2023-04-12
  • 2 回答
  • 0 關注
  • 244 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號