Fork me on GitHub

Aprendiendo Ruby - Mysql con Threads

September 12, 2014

El siguiente es un script que mediante threads crea n conexiones a la base de datos y donde cada conexión/thread realiza n consultas de insert o update.

Para crear threads en Ruby hay que usar la clase Thread. Aquí un ejemplo sencillo

threads = []
3.times {
    threads << Thread.new {
        print "Threads are fun!"
    }
}
threads.each { |t| t.join }
Threads are fun!
Threads are fun!
Threads are fun!

Para mysql usé el módulo mysql, el cual instalé de la siguiente forma.

apt-get install ruby1.9.1-dev libmysqlclient-dev
gem install mysql

Aquí un ejemplo simple

require 'mysql'

db = Mysql.new 'host', 'user', 'pass', 'db_name'
result = db.query 'select now()'

result.each do |row|
    row.each do |col|
        puts col
    end
end
2014-09-12 08:16:23

Finalmente el script

El script imprime t por cada thread creado, c por cada nueva conexión y . por cada 10 queries.

$ ruby bench.rb 10 100
Bench: 10 threads, 100 queries each
ttttcct.c.tcc...c..t.....t.c.....tc.......tc...........c
........................................................
........

Recursos

Ruby