Active Record 提供 find_each来分批处理大量数据. 但是,当数据量在百万级别或是更多的时候find_each也会变得很慢。
采用像Resque这样的异步处理插件是一个不错的选择:
User.find_each {|user| Resque.enqueue(MyJob, user) }
但是用Resque有时候又有点杀鸡用牛刀的嫌疑,使用forking!
if GC.respond_to?(:copy_on_write_friendly=)
GC.copy_on_write_friendly = true
end
jobs_per_process = 100
process_count = 10
User.find_in_batches(:batch_size => jobs_per_process * process_count) do |group|
batches = group.in_groups(process_count)
batches.each do |batch|
Process.fork do
ActiveRecord::Base.establish_connection
# Do the actual work
batch.each {|user| .. }
end
end
Process.waitall
end
上面的代码一次性从数据库获取1000条记录,然后fork 10个进程,每个进并行处理100条记录,这样比串行处理1000条记录快多了。
如果考虑到并行处理会耗费额外的内存,使用REE是一个不错的选择.
原文地址
分享到:
相关推荐
google batch processing in a neural network processor
Work with all aspects of batch processing in a modern Java environment using a selection of Spring frameworks. This book provides up-to-date examples using the latest configuration techniques based on...
《Spring Batch 示例——深入理解gs-batch-processing3.0.7》 在IT行业中,Spring Batch作为Spring框架的一部分,已经成为批量处理和批处理任务的首选工具。本文将深入探讨"gs-batch-processing3.0.7"这个项目,它...
《gs-batch-processing-master2:批量处理指南与快速入门》 在IT行业中,批量处理(Batch Processing)是一种常见的数据处理方式,特别是在大数据分析、系统维护和自动化任务执行等领域。"gs-batch-processing-...
DESCRIPTION Even though running batch processes is an everyday task in almost all IT departments, Java developers have had few options for writing batch applications. The result? No standards, poor ...
Spring Batch in Action是一本专注于Spring Batch框架的书籍,由Arnaud Cogoluègnes、Thierry Templier、Gary Gregory和Olivier Bazoud合著,由Manning Publications公司出版。这本书详细介绍了如何使用Spring ...
这个名为"ENVI_Raster_Processing_Batch_Tools_V5.3_18_S1.zip"的压缩包,显然包含了ENVI的批量处理工具的版本5.3.18,可能是一个特定的更新或服务包1。在遥感图像处理领域,批量处理工具是提高工作效率的关键,尤其...
Apache Hadoop TM YARN Moving beyond MapReduce and Batch Processing with Apache HadoopTM 2 全本,不是sample。
《Spring Batch in Action》是一本深入探讨Spring Batch框架的书籍,由Arnaud Cogoluègnes、Thierry Templier、Gary Gregory和Olivier Bazoud共同编写,Manning出版社出版。这本书旨在帮助读者理解和掌握如何使用...
including transactions and job state/restartability * How to scale batch jobs via distributed batch processing * How to handle testing batch processes (Unit and functional) Who this book is for * ...
### Spring Batch In Action #### 知识点一:Spring Batch 的简介 - **Spring Batch** 是一个基于 Java 的强大框架,专门设计用于处理大规模数据批处理任务。 - 它为开发人员提供了一套完整的工具来构建高效、可靠...
标题《InBatch User Guide》表明该文档是一份指南手册,其目的是为了指导用户如何使用InBatch这款软件。InBatch可能是一款与批量处理相关的专业软件,适用于需要进行批量生产或批量操作的场景,比如工业批量控制、...
Spring Batch是一本介绍如何使用Spring Batch框架来构建批处理应用程序的专业书籍。在软件行业中,随着各种趋势的发展,例如基于Web的应用、面向服务的架构(SOA)以及事件驱动的应用,批处理应用程序虽然存在已久,...
《Spring Batch in Action》是一本深入探讨Spring Batch框架的专著,由Arnaud Cogoluègnes、Thierry Templier、Gary Gregory和Olivier Bazoud共同撰写。本书系统地介绍了Spring Batch的核心概念和技术细节,并提供...
《Spring Batch in Action》是Manning出版社在2011年10月出版的一本英文技术书籍,专门探讨了Spring Batch这一强大的批处理框架。Spring Batch是Spring生态系统的组成部分,旨在简化批量处理任务的开发,提供了一套...
在IT领域,批处理命令(Batch Processing Command)是一种在操作系统中执行一系列预定义命令的方法,通常用于自动化重复性任务,节省时间和资源。本压缩包"Batch-processing-command.rar"似乎包含了一个名为"Batch ...
适用于带有AWS Batch的MATLAB Parallel Server的Parallel Computing Toolbox插件的安装程序文件。 这些示例文件使用通用调度程序界面使用户能够使用AWS Batch将作业提交到MATLAB Parallel Server。 一旦安装,您将...
:fire: 快速批量删除Active Record和Postgres 安装 将此行添加到您的应用程序的Gemfile中: gem 'delete_in_batches' 如何使用 批量删除行 Tweet . where ( user_id : 1 ) . delete_in_batches 重要提示:在生产...