sábado, 25 de septiembre de 2010

MySQL 5.1: Desempeño de MySQL con mysqlslap

Esta estamos trabajando con MySQL, necesito poner a operar un servidor con MySQL para la empresa, como ya vieron la base de datos es MySQL 5.1.

Para esto existen muchas herramientas para esto, pero esta vez nos vamos a enforcar sobre:

mysqlslap

Viene por default cuando instalas mysql, estoy trabajando sobre Centos 5.5 en una maquina virtual con Xen:

uname -a
Linux 2.6.18-194.11.3.el5xen #1 SMP Mon Aug 30 16:55:32 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

La version de MySQL es:

MySQL-client-community.x86_64 5.1.50-1.rhel5 installed
MySQL-devel-community.x86_64 5.1.50-1.rhel5 installed
MySQL-server-community.x86_64 5.1.50-1.rhel5 installed
MySQL-shared-compat.x86_64 5.1.50-1.rhel5 installed

Centos aun sigue trabajando sobre MySQL 5.0.x, muchas funciones que necesitamos de MySQL no las tiene la version 5.0 por ello decidimos irnos por la version que nos proporciona mysql.com.

Bien, vamos a empezar, que version estamos usando de mysqlslap:

mysqlslap Ver 1.0 Distrib 5.1.50, for unknown-linux-gnu (x86_64)

Ahora mysqlslap tiene la opcion de poner trabajar sobre las engines de mysql, he trabajado con otras herramientas para desempeño de mysql y muchas no tiene soporte para otras engines sino solo para myisam.

La engine o motor de MySQL que me interesa es InnoDB por varias funciones que MyISAM no trae , una de ella es "ROLL BACK", la version 5.5 de MySQL ya trae a InnoDB como motor principal asi que tenemos que ir adaptandonos a el cambio.

La bd con la que vamos a trabajar se llama: sbinno y la tabla se llama: sbtest con estos campos:

+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| k | int(10) unsigned | NO | MUL | 0
| c | char(120) | NO
| pad | char(60) | NO
| vchar | varchar(30) | NO | | NULL
+-------+------------------+------+-----+---------+----------------+

Vamos empezando a correr las primeras pruebas, vamos empezando insertando datos a la tabla con mysqlslap:

[root@mysqlmaster ~]# mysqlslap --user=root --password=mipassword --engine=innodb --create-schema="sbinno" --query="INSERT INTO sbtest (k,c,pad,vchar) VALUES (1234567890,'Esta es la informacion que vamos a meter en el campo de nombre c de la tabla sbtest de la base de datos nombre sbinno','Aqui vamos a poner su direccion donde viven calle # colonia','Lugar donde trabajan aqui va')" --number-of-queries=10000

Vamos que estamos haciendo:

--engine=innodb especificamos el motor a usar.
--create-schema="sbinno" la bd que con la que deseamos trabajar.
--query= el comando sql que deseamos ejecutar.
--number-of-queries=10000 cuantes repeticiones deseamos del comando.

1er ejemplo:

mysqlslap --user=root --password=mipassword --engine=innodb --create-schema="sbinno" --query="INSERT INTO sbtest (k,c,pad,vchar) VALUES (1234567890,'bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla','bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla','bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla')" --number-of-queries=1000
Benchmark
Running for engine innodb
Average number of seconds to run all queries: 1.392 seconds
Minimum number of seconds to run all queries: 1.392 seconds
Maximum number of seconds to run all queries: 1.392 seconds
Number of clients running queries: 1
Average number of queries per client: 1000

Ya cada quien decide que datos agregarle.

Podemos ver los resultados el tiempo que le llevo agregar los 1000 registros.


No hay comentarios: