rescue true

25 agosto, 2010

Mejorando el rendimiento: find_in_batches y find_each

Archivado en: Ruby on Rails,Tips&Tricks — xurdekio @ 8:09 am
Tags: , ,

Ruby on Rails no deja de sorprenderme con la cantidad de métodos útiles que te puedes encontrar por su API un día aburrido. En esta ocasión os traigo dos métodos para tratar grandes cantidades de registros sin saturar la memoria del servidor.

El primero es find_in_batches, que nos permite traer los registros de la base de datos en lotes, pudiendo pasarle condiciones de búsqueda, tamaño de los lotes, offset…

El segundo es find_each, que es un iterador aprovechando el método anterior.

Estos dos métodos nos permiten procesar simulatenamente en dos (o más) hilos todos los registros de la base de datos, pudiendo estar un worker con los registros del 0 al 10000, otro del 10000 al 20000… etc.

No hay que olvidarse de la nota al pie en la API, estos métodos estan orientados a grandes cantidades de datos, si sólo vas a tratar unos pocos usar el find normal!

Tema Rubric. Blog de WordPress.com.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.