springBootトランザクションの失敗は、バルク挿入のパフォーマンスの劇的な下落につながっています

    @Override
     公共 ボイドsavePatientAndSeekMedical(){
         長い開始= にSystem.currentTimeMillis();
//         。((PatientService)AopContext.currentProxy())saveBatch(患者、1000);
//         saveBatch(患者、1000); 
        SpringUtil.getBean(これ。.getClass())saveBatch(患者、1000年);
//         patientMapper.saveBatchBySql(患者);
//         seekMedicalService.saveBatch(seekMedicals、1000); 
        log.warn(" 保存" + patients.size()+ " 条患者数据、用时:"+(のSystem.currentTimeMillis() -開始)+ " MS " )。
        patients.clear(); 
        seekMedicals.clear(); 
    }

患者データを保存するために3つのメソッドを使用しています。このコード

。最初の((PatientService)AopContext.currentProxy())saveBatch(患者、1000);このように現在のプロキシを見つけることができませんスロー:作ることが「真」にすることをお勧めセット「exposeProxy」プロパティも利用できる例外は、投機その理由は、あなたがこのように使用することができます側面に普通の状況を行う必要がある場合saveBatchは、mybatisPlusの方法であります

 

二saveBatch(患者、1000);巨大な遅いデータ転送2ワット輸入原因性能は約900秒かかります

 

(15秒程度のデータの2ワット)を第三は、トランザクションを保証することができますし、パフォーマンスは非常に良いです

 

コードを貼り付けSpringUtil

パッケージcn.rivamed.fhvc.util; 

輸入org.springframework.beans.BeansException。
輸入org.springframework.context.ApplicationContext; 
輸入org.springframework.context.ApplicationContextAware; 
輸入org.springframework.core.env.Environment; 
輸入org.springframework.stereotype.Component; 

@Component 
パブリック クラスSpringUtil実装ApplicationContextAware { 

    プライベート 静的のApplicationContextのApplicationContext = NULL ; 

    @Override 
    公共 ボイドsetApplicationContext(ApplicationContextのApplicationContextの)はBeansException {スロー
        SpringUtil.applicationContext =ApplicationContextの; 
    } 

    パブリック 静的 <T> T getBean(クラス<T> CLA){
         戻りapplicationContext.getBean(CLA)を、
    } 

    パブリック 静的 <T> T getBean(文字列名、クラス<T> CAL){
         リターンapplicationContext.getBean(名前、CAL)。
    } 

    パブリック 静的オブジェクトgetBean(文字列名){
         リターンapplicationContext.getBean(名); 
    } 

    パブリック 静的文字列のgetProperty(文字列キー){
         リターン applicationContext.getBean(環境。クラス.getProperty(キー))。
    }
}

 

おすすめ

転載: www.cnblogs.com/guanxiaohe/p/11818372.html