【问题标题】:Process Millions of DB records in concurrently in batch using grails使用 grails 批量并发处理数百万条数据库记录
【发布时间】:2013-12-11 10:54:30
【问题描述】:

我在使用 grails 处理数百万条数据库记录方面需要帮助。

我在数据库中有数百万条记录。我无法在单个查询中获取所有记录,因为它会抛出内存异常。所以我想批量获取记录。并处理每批的每条记录。 我想在 grails 中实现阻塞队列,我将在队列中添加所有子查询的结果,然后多个线程将消耗队列并进行自己的处理。

我怎样才能做到这一点?

【问题讨论】:

    标签: mysql grails concurrency


    【解决方案1】:

    这可能不是您想要的有效解决方案,但是,使用 bootstarp.groovy 文件我处理过类似的问题,例如从 excel 文件中读取并将其添加到数据库中,每条记录使用线程逐行获取。

    import grails.transaction.Transactional;
    

    BootStrap.groovy

    @Transactional
    def importformExcel(){
    
    // add you code here for batching...and call it inside the thread
    }
    

    bootstrap.init 部分添加以下代码以在启动时执行它。您可以添加一些逻辑以防止每次运行或使其一次执行并永久停止。

      def init = { servletContext ->
    
            sessionFactory.currentSession.flush()
            try{
                        @Transactional
                        Thread stateLgaThread = new Thread({
    
                         //code ur thread logic here!
                         importformExcel()
                         //sessionFactory.currentSession.flush()
                         TimerThread.sleep(100) // even give more chance to other application/instruction
                         } as Runnable).start()
                         @Transactional
                         Thread regionThread = new Thread({
                            //code ur thread logic here!
                            importformExcel()
                            // sessionFactory.currentSession.flush()
                             TimerThread.sleep(100) // even give more chance to other application/instruction
                         } as Runnable).start()
                    }
                    catch(ex){
    
                        log.debug "Inside Thread Exception:{ex.message}"
                    }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-01
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      • 2019-04-29
      • 2016-01-29
      • 2012-10-21
      相关资源
      最近更新 更多